Antworten:
Standardargumentwerte werden zum Zeitpunkt der Funktionsdefinition ausgewertet, sind jedoch selfnur zum Zeitpunkt des Funktionsaufrufs verfügbar. Daher können sich die Argumente in der Argumentliste nicht gegenseitig referenzieren.
Es ist ein gängiges Muster, ein Argument als Standard festzulegen Noneund einen Test dafür im Code hinzuzufügen:
def p(self, b=None):
if b is None:
b = self.a
print b
Wenn Sie über Google hier angekommen sind, überprüfen Sie bitte, ob Sie sich selbst als ersten Parameter für eine Klassenfunktion angegeben haben. Insbesondere, wenn Sie versuchen, Werte für dieses Objekt innerhalb der Funktion zu referenzieren.
def foo():
print(self.bar)
> NameError: Der Name 'self' ist nicht definiert
def foo(self):
print(self.bar)