Nameerror: name ‚Selbst‘ ist nicht definiert
Frage
Warum eine solche Struktur
class A:
def __init__(self, a):
self.a = a
def p(self, b=self.a):
print b
gibt einen Fehler NameError: name 'self' is not defined
?
Lösung
Standardargumentwerte werden in Funktion definiert Zeit ausgewertet, aber self
ist ein Argument nur bei Funktionsaufruf zur Verfügung stehende Zeit. So Argumente in der Argumentliste können sie nicht beziehen.
Es ist ein gemeinsames Muster ein Argument auf Standard einen Test für die im Code None
und fügen Sie:
def p(self, b=None):
if b is None:
b = self.a
print b
Andere Tipps
Für Fälle, in denen Sie auch die Möglichkeit haben wollen, von ‚b‘ auf Keine Einstellung:
def p(self, **kwargs):
b = kwargs.get('b', self.a)
print b
Wenn Sie hier über Google angekommen sind, stellen Sie sicher, zu überprüfen, ob Sie sich selbst als ersten Parameter zu einer Klasse Funktion gegeben haben. Vor allem, wenn Sie versuchen, Werte innerhalb der Funktion für das Objekt zu verweisen.
def foo():
print(self.bar)
> Nameerror: name 'Selbst' ist nicht definiert
def foo(self):
print(self.bar)
> "Congrats hast du die Nameerror los!"