Pertimbangkan kelas berikut:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Rekan kerja saya cenderung mendefinisikannya seperti ini:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
Alasan utama untuk ini adalah bahwa editor pilihan mereka menunjukkan properti untuk pelengkapan otomatis.
Secara pribadi, saya tidak suka yang terakhir, karena tidak masuk akal bahwa kelas memiliki sifat-sifat tersebut None
.
Yang mana yang akan menjadi praktik yang lebih baik dan untuk alasan apa?
__init__
sudah menyediakan autocompletion dll. Juga, menggunakan None
mencegah IDE untuk menyimpulkan jenis atribut yang lebih baik, jadi lebih baik menggunakan default yang masuk akal sebagai gantinya (ketika mungkin).
typing
modul, yang memungkinkan Anda untuk memberikan petunjuk kepada IDE dan linter, jika hal semacam itu menggelitik keinginan Anda ...
self
. Bahkan jika self.name
atau self.age
tidak ditugaskan di __init__
mereka tidak akan muncul dalam contoh self
, mereka hanya muncul di kelas Person
.