Python n'a pas vraiment de syntaxe spéciale pour la déclaration des variables : vous devez simplement prendre soin d'attribuer une valeur à chaque variable avant de l'utiliser. (Il existe un élément appelé global
mais je ne l'ai jamais utilisé). Venant de certains autres langages de programmation, j'ai toujours pensé que c'était un inconvénient.
Dans les classes Python, cependant, ce problème (lire fonctionnalité ) est amplifié : vous ne pouvez pas déclarer une variable dans une définition de classe sans lui attribuer une valeur, donc une telle attribution est généralement retardée jusqu'à ce que nous ayons une valeur à lui attribuer, comme dans __init__()
Ejemplo: Mauvais
class MyClass(object):
new_thing
def __init__(self, the_new_thing):
self.new_thing = the_new_thing
Cela échoue ! new_thing ne peut pas simplement "traîner" sur la deuxième ligne. Il faut lui attribuer une valeur, car il n'y a pas de syntaxe (en Python) pour les déclarations.
Ejemplo: Droit
class MyClass(object):
def __init__(self, the_new_thing):
self.new_thing = the_new_thing
Nous voyons donc que new_thing
n'est jamais déclarée explicitement, mais elle obtient une valeur lorsqu'un fichier MyClass
est créé. Confusion !
Ejemplo: Meilleur
class MyClass(object):
new_thing = None
def __init__(self, the_new_thing):
self.new_thing = the_new_thing
C'est beaucoup moins compliqué à lire ou à maintenir, mais il faut donner à new_thing une valeur explicite car la déclaration en soi est impossible.