Ich frage mich, warum die dritte Zeile in Snippet B würde einen Fehler auslösen. Mein Verständnis ist in der zweiten Zeile in Snippet B (und A), ich erstellte eine Klassenvariable (keine Klasseninstanz) cls_obj
, deren Typ/Klassenname Duck
ist. Es ist wieKann ich in Python ein benanntes Tupel mit typename definieren?
Also erwartete ich Snippet A und B würde beide funktionieren, jedoch Snippet B fehlgeschlagen! Was ist schief gelaufen?
# Snippet A
from collections import namedtuple
cls_obj=namedtuple('Duck', 'bill tail')
duck = cls_obj(bill='wide orange', tail='long')
# Snippet B
from collections import namedtuple
cls_obj=namedtuple('Duck', 'bill tail')
duck = Duck(bill='wide orange', tail='long')
Was war der Fehler? –
NameError: Name 'Duck' ist nicht definiert @ BurhanKhalid – Nicholas
'namedtuple()' ist eine gewöhnliche Funktion. Es kann keine Namen im umschließenden Bereich definieren. –