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 None
evita 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).
typing
mó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.name
o self.age
no __init__
, no aparecerían en la instancia self
, solo aparecerían en la clase Person
.