Rozważ następującą klasę:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Moi współpracownicy określają to w następujący sposób:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
Głównym tego powodem jest to, że ich wybrany edytor pokazuje właściwości autouzupełniania.
Osobiście nie lubię tego drugiego, ponieważ nie ma sensu, aby klasa miała ustawione właściwości None.
Który byłby lepszą praktyką i z jakich powodów?
__init__już zapewnia autouzupełnianie itp. Również użycie Nonezapobiega temu, aby IDE wniosło lepszy typ atrybutu, więc lepiej zamiast tego użyć rozsądnej wartości domyślnej (kiedy możliwy).
typingmoduł, który pozwala ci dostarczać wskazówki do IDE i lintera, jeśli tego rodzaju rzeczy łaskoczą twoje fantazje ...
self. Nawet jeśli self.nameani self.agenie były przydzielane __init__oni by nie pokazać się na przykład self, tylko pokazać się w klasie Person.