Mengapa struktur seperti itu
class A:
def __init__(self, a):
self.a = a
def p(self, b=self.a):
print b
memberi kesalahan NameError: name 'self' is not defined
?
Nilai argumen default dievaluasi pada waktu fungsi-menentukan, tetapi self
merupakan argumen hanya tersedia pada waktu panggilan fungsi. Jadi argumen dalam daftar argumen tidak dapat saling merujuk.
Ini adalah pola umum untuk menetapkan argumen None
dan menambahkan tes untuk itu dalam kode:
def p(self, b=None):
if b is None:
b = self.a
print b
Untuk kasus di mana Anda juga ingin memiliki opsi pengaturan 'b' ke Tidak Ada:
sumber
Jika Anda telah tiba di sini melalui google, pastikan untuk memeriksa bahwa Anda telah memberikan diri sebagai parameter pertama ke fungsi kelas. Terutama jika Anda mencoba referensi nilai untuk objek di dalam fungsi.
> NameError: nama 'diri' tidak ditentukan
sumber