namedtuple-Definition

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

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'!
Python nervt. (Nicht immer, und natürlich nur mich, niemals andere)
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.
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Antworten