Risposte:
I valori degli argomenti predefiniti vengono valutati al momento della definizione della funzione, ma selfè un argomento disponibile solo al momento della chiamata della funzione. Pertanto gli argomenti nell'elenco degli argomenti non possono riferirsi l'un l'altro.
È un modello comune per impostare un argomento su predefinito Nonee aggiungere un test per quello nel codice:
def p(self, b=None):
if b is None:
b = self.a
print b
Se sei arrivato qui tramite google, assicurati di aver dato self come primo parametro di una funzione di classe. Soprattutto se si tenta di fare riferimento a valori per quell'oggetto all'interno della funzione.
def foo():
print(self.bar)
> NameError: il nome 'self' non è definito
def foo(self):
print(self.bar)