Considere la siguiente clase:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Mis compañeros de trabajo tienden a definirlo así:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
La razón principal de esto es que su editor de elección muestra las propiedades para el autocompletado.
Personalmente, no me gusta el último, porque no tiene sentido que una clase tenga esas propiedades establecidas None.
¿Cuál sería una mejor práctica y por qué razones?
__init__ya proporciona autocompletado, etc. Además, el uso Noneevita que el IDE infiera un mejor tipo para el atributo, por lo que es mejor usar un valor predeterminado sensible en su lugar (cuando posible).
typingmódulo, que le permiten proporcionar pistas al IDE y la interfaz, si ese tipo de cosas le hacen cosquillas ...
self. Incluso si estuvieran asignados self.nameo self.ageno __init__, no aparecerían en la instancia self, solo aparecerían en la clase Person.