Рассмотрим следующий класс:
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.