Ich habe die folgenden genannt Tupel:Python: Erweitern eines vordefinierten Namen Tupel
from collections import namedtuple
ReadElement = namedtuple('ReadElement', 'address value')
und dann möchte ich folgendes:
LookupElement = namedtuple('LookupElement', 'address value lookups')
Es gibt Überschneidungen zwischen den beiden namedtuples, wie kann ich eine Unterklasse ReadElement, um ein zusätzliches Feld zu enthalten?
class LookupElement(ReadElement):
def __new__(self, address, value, lookups):
self = super(LookupElement, self).__new__(address, value)
l = list(self)
l.append(lookups)
return tuple(l)
jedoch das Tupel dort angelegt wird ein dann in der neue Aussage, wenn ich selbst ändern eine Liste, die ich Typ-Informationen verlieren wird, wie kann ich das vermeiden?
das ist genau das, was ich wollte, dank – Har
Dies ist, was die Dokumentation empfehlen zu tun, aber was ist, wenn Sie eine benutzerdefinierte namedtuple mit einem generierten Feld haben? – Ethereal
@Ethereal: Alle namedtuple-Klassen sind benutzerdefiniert. Das '_fields'-Attribut wird weiterhin die tatsächlichen Felder in der Klasse widerspiegeln. –