Yanıtlar:
Varsayılan bağımsız değişken değerleri işlev tanımlaması zamanında değerlendirilir, ancak self
yalnızca işlev çağrısı zamanında kullanılabilen bir bağımsız değişkendir. Dolayısıyla, argüman listesindeki argümanlar birbirlerine atıfta bulunamaz.
Bir argümanı varsayılan olarak belirlemek None
ve kodda bunun için bir test eklemek yaygın bir kalıptır :
def p(self, b=None):
if b is None:
b = self.a
print b
Buraya google üzerinden geldiyseniz, lütfen bir sınıf işlevinin ilk parametresi olarak kendini verdiğinizden emin olun. Özellikle işlevin içindeki nesne için değerlere başvurmaya çalışırsanız.
def foo():
print(self.bar)
> NameError: 'self' adı tanımlanmadı
def foo(self):
print(self.bar)