Відповіді:
Значення аргументів за замовчуванням оцінюються під час визначення функції, але selfце аргумент, доступний лише під час виклику функції. Таким чином, аргументи у списку аргументів не можуть посилатися один на одного.
Це загальний шаблон для аргументу за замовчуванням Noneта додавання тесту для цього в коді:
def p(self, b=None):
if b is None:
b = self.a
print b
Якщо ви приїхали сюди через google, переконайтеся, що ви переконалися, що ви дали себе як перший параметр функції класу. Особливо, якщо ви намагаєтеся посилати значення для цього об'єкта всередині функції.
def foo():
print(self.bar)
> NameError: ім'я "self" не визначено
def foo(self):
print(self.bar)