Benannte Tupel in Python sind eine Erweiterung des integrierten Tupel-Datentyps und ermöglichen es Ihnen, den Elementen eines Tupels aussagekräftige Namen zu geben. Mit anderen Worten: Benannte Tupel sind Tupel mit benannten Attributen. Ist das nicht cool?
Sie sind Teil des Sammlungsmoduls und bieten eine Möglichkeit, einfache, unveränderliche Klassen auf einfachere Weise zu definieren.
Warten Sie was, Unterricht?
Ja, Unterricht.
Benannte Tupel sind im Wesentlichen unveränderliche Klassen.
Das ist die Magie, die entsteht: Wenn Sie mit „namedtuple“ ein benanntes Tupel erstellen, ist das Ergebnis keine Instanz des Tupels selbst, sondern eine dynamisch generierte Klasse, die von „tuple“ erbt. Wieder cool!!
Mal sehen, wie das funktioniert.
from collections import namedtuple P = namedtuple("Point", "x y")
Wenn Sie P = benannttuple("Point", "x y") ausführen, erstellen Sie eine neue Klasse mit dem Namen Point (wie im ersten Argument von benannttuple angegeben).
Die Funktion „namedtuple“ verwendet den Typ hinter den Kulissen, um dynamisch eine neue Klasse mit dem Namen „Point“ zu erstellen, die von „tuple“ erbt. Diese neue Klasse wird in der Variablen P.
gespeichertUnd wie bei Klassen ist der Typ der Typ.
> type(P) class 'type'
> class A: pass > type(A) class 'type'
Und welcher Typ ist die Instanz eines benannten Tupels?
from collections import namedtuple P = namedtuple("Point", "x y") p = P(1,2) > print(type(p)) class '__main__.Point'
p ist eine Instanz vom Typ Point. Es ist aber auch ein Tupel:
> print(isinstance(p, tuple)) True
Zusammengefasst:
Und noch etwas zum Schluss:
Es ist sehr üblich, die Namedtuple-Variable (die wir P nannten) mit demselben Namen zu benennen wie der Typname (die wir Point nannten), die dynamisch erstellte Klasse:
from collections import namedtuple Point = namedtuple("Point", "x y")
Ich habe einen anderen Namen verwendet, um die Unterscheidung zwischen den beiden deutlich zu machen.
Das obige ist der detaillierte Inhalt vonBenannte Tupel in Python: Welcher Art sind sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!