Considérez la classe suivante:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
Mes collègues ont tendance à le définir comme ceci:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
La raison principale en est que leur éditeur de choix affiche les propriétés pour l'auto-complétion.
Personnellement, je n'aime pas le dernier point, car cela n'a aucun sens qu'une classe ait ces propriétés définies None
.
Lequel serait la meilleure pratique et pour quelles raisons?
__init__
fournit déjà autocomplétion , etc. De plus, en utilisant None
empêche l'IDE pour en déduire un meilleur type de l'attribut, il est donc préférable d'utiliser un défaut raisonnable au lieu (quand possible).
typing
module, qui vous permettent de fournir des astuces à l'EDI et à linter, si ce genre de chose titille votre fantaisie ...
self
. Même si self.name
ou s'ils self.age
n'étaient pas assignés dans, __init__
ils n'apparaissent pas dans l'instance self
, ils n'apparaissent que dans la classe Person
.