Odpowiedzi:
Domyślne wartości argumentów są oceniane w czasie definiowania funkcji, ale self
są argumentami dostępnymi tylko w czasie wywołania funkcji. Dlatego argumenty na liście argumentów nie mogą się odnosić.
Jest to typowy wzorzec do domyślnego argumentu None
i dodawania testu w kodzie:
def p(self, b=None):
if b is None:
b = self.a
print b
Jeśli dotarłeś tutaj przez Google, upewnij się, że podałeś self jako pierwszy parametr funkcji klasowej. Zwłaszcza jeśli spróbujesz odwołać się do wartości dla tego obiektu wewnątrz funkcji.
def foo():
print(self.bar)
> NameError: nazwa „self” nie jest zdefiniowana
def foo(self):
print(self.bar)