Seite 1 von 1

namedtuple-Definition

Verfasst: Dienstag 18. Dezember 2012, 09:35
von Goswin
Warum muss ich bei einer namedtuple-Definition den Namen zweimal eingeben, zum Beispiel:

Code: Alles auswählen

Punkt = collections.namedtuple("Punkt", "x y z")
Was für einen Sinn soll es haben, wenn ich aus einer Laune heraus

Code: Alles auswählen

Punkt = collections.namedtuple("Kuckuck", "x y z")
schreibe, was soweit ich überblicke genauso gut funktioniert? Das namedtuple könnte doch implizit automatisch so heißen, wie ich es nenne, also hier 'Punkt'!

Re: namedtuple-Definition

Verfasst: Dienstag 18. Dezember 2012, 09:44
von BlackJack
@Goswin: Das könnte nicht implizit so heissen weil die Funktion `namedtuple()` keine Möglichkeit hat heraus zu finden an welchen Namen ihr Ergebnis nach dem sie abgearbeitet wurde gebunden wird. `namedtuple()` ist ja nicht irgendeine Spezialsyntax, sondern ein ganz normaler Aufruf. Man muss das Ergebnis ja nicht einmal an einen Namen binden. Das erste Argument ist dazu da, dass man beispielsweise bei Debug-Ausgaben etwas sinnvolles erhält. Wenn Du Punkt-Objekte dann als 'Kuckuck' ausgegeben haben möchtest, hindert Dich natürlich niemand daran.

Re: namedtuple-Definition

Verfasst: Dienstag 18. Dezember 2012, 10:19
von Goswin
Vielen Dank. Wenn ich das richtig verstanden habe, sollte ich für Debug-Zwecke wohl am besten etwas wie

Code: Alles auswählen

Punkt = collections.namedtuple("namedtuple_Punkt", "x y z")
oder oft einfach nur

Code: Alles auswählen

Punkt = collections.namedtuple("namedtuple", "x y z")
schreiben.

Re: namedtuple-Definition

Verfasst: Dienstag 18. Dezember 2012, 10:32
von EyDu
Nein. Übergib einfach den gewünschten Namen und fertig. In den meisten Fällen wird es der gleiche sein wie die linke Seite der Zuweisung.