Antworten:
Standardargumentwerte werden zum Zeitpunkt der Funktionsdefinition ausgewertet, sind jedoch self
nur 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 None
und 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)