Benannte Tupel in Python: Welcher Art sind sie?

DDD
Freigeben: 2024-11-23 05:31:24
Original
784 Leute haben es durchsucht

Named Tuples in Python: what type are they?

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")
Nach dem Login kopieren

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.

gespeichert

Und wie bei Klassen ist der Typ der Typ.

> type(P)
class 'type'
Nach dem Login kopieren
> class A:
    pass

> type(A)
class 'type'
Nach dem Login kopieren

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'

Nach dem Login kopieren

p ist eine Instanz vom Typ Point. Es ist aber auch ein Tupel:

> print(isinstance(p, tuple))
True

Nach dem Login kopieren

Zusammengefasst:

  • P ist eine Klasse, die dynamisch von „namedtuple“ generiert wird.
  • Instanzen von P sind Objekte vom Typ Point, die auch Unterklassen bilden Tupel.

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")
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage