Розглянемо наступний клас:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Мої колеги, як правило, визначають це так:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
Основна причина цього полягає в тому, що їх вибір редактора показує властивості для автозавершення.
Особисто я не люблю останнього, тому що немає сенсу, що клас має ці властивості None
.
Яка з них буде кращою практикою та з яких причин?
__init__
вже надає автозавершення тощо. Також використання None
запобігає IDE виводити кращий тип для атрибуту, тому краще замість цього використовувати розумний за замовчуванням (коли можливо).
typing
модуль, який дозволяє вам надати підказки IDE та лінеру, якщо така річ відмічає ваші фантазії ...
self
. Навіть якщо self.name
і self.age
не було призначено в __init__
вони не будуть відображатися в разі self
, вони з'являються тільки в класі Person
.