Aşağıdaki sınıfı göz önünde bulundurun:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
İş arkadaşlarım bunu şöyle tanımlamaya meyillidir:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
Bunun temel nedeni, seçtikleri editörün otomatik tamamlama özelliklerini göstermesidir.
Şahsen, ikincisini beğenmedim, çünkü bir sınıfın bu özelliklere sahip olduğu bir anlam ifade etmiyor None
.
Hangisi daha iyi uygulama olacaktır ve hangi sebeplerden dolayı?
__init__
kullanarak , zaten otomatik tamamlama vb. Özellikleri ayarlama . Ayrıca, None
IDE'nin özellik için daha iyi bir tip çıkarmasını önler, bu nedenle (yerine, makul bir varsayılan) kullanmak daha iyidir. mümkün).
typing
IDE ve linter ile ilgili ipuçları vermenize izin veren bir modül var, eğer bu tür bir şey düşkünlüğünüzü gıdıklıyorsa ...
self
. Bile self.name
veya self.age
atanmış değildi __init__
durumda görünmeyen onlar self
, sadece sınıfta görünür Person
.