Розглянемо наступний клас:
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.