Відповіді:
Значення аргументів за замовчуванням оцінюються під час визначення функції, але 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)