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 None
zapobiega temu, aby IDE wniosło lepszy typ atrybutu, więc lepiej zamiast tego użyć rozsądnej wartości domyślnej (kiedy możliwy).
typing
moduł, który pozwala ci dostarczać wskazówki do IDE i lintera, jeśli tego rodzaju rzeczy łaskoczą twoje fantazje ...
self
. Nawet jeśli self.name
ani self.age
nie były przydzielane __init__
oni by nie pokazać się na przykład self
, tylko pokazać się w klasie Person
.