Haruskah saya memberikan nilai default kepada anggota kelas saya seperti ini:
class Foo:
num = 1
atau seperti ini?
class Foo:
def __init__(self):
self.num = 1
Dalam pertanyaan ini saya menemukan bahwa dalam kedua kasus,
bar = Foo()
bar.num += 1
adalah operasi yang terdefinisi dengan baik.
Saya mengerti bahwa metode pertama akan memberi saya variabel kelas sedangkan yang kedua tidak. Namun, jika saya tidak memerlukan variabel kelas, tetapi hanya perlu menetapkan nilai default untuk variabel instan saya, apakah kedua metode sama baiknya? Atau salah satunya lebih 'pythonic' dari yang lain?
Satu hal yang saya perhatikan adalah bahwa dalam tutorial Django, mereka menggunakan metode kedua untuk mendeklarasikan Model. Secara pribadi saya pikir metode kedua lebih elegan, tetapi saya ingin tahu apa cara 'standar' itu.
self.attr = attr or []
di dalam__init__
metode. Itu mencapai hasil yang sama (menurut saya) dan masih jelas serta dapat dibaca.