Lorsqu'une classe est instanciée, la méthode spéciale __init__ est invoquée avec en premier paramètre l'objet nouvellement instancié par l'interpréteur.
>>> class Voiture(object): ... def __init__(self): ... self.immatriculation = '%s XY 44' % id(self) ... print self.immatriculation ... >>> voiture = Voiture() 4300016464 XY 44
Au même titre que les autres fonctions, le contructeur peut recevoir des arguments :
>>> class Voiture(object):
... def __init__(self, numero):
... self.immatriculation = '%s XY 44' % numero
... print self.immatriculation
...
>>> voiture = Voiture('889')
889 XY 44
Un destructeur peut être défini grâce à la méthode spéciale __del__(). Cette méthode peut être appellée explicitement ou automatiquement par le garbage collector.
>>> class Voiture(object):
... def __init__(self, numero):
... self.immatriculation = '%s XY 44' % numero
... print self.immatriculation
... def __del__(self):
... print 'En route pour la casse :('
...
>>> voiture = Voiture('889')
889 XY 44
>>> del voiture
En route pour la casse :(
Il existent différentes méthodes spéciales permettant de faire varier le comportement des objets.
Il est recommandé d’utiliser la primitive super pour faire appel aux méthodes de la classe parente.
>>> class Voiture(object):
... def __init__(self, couleur):
... self.couleur = couleur
...
>>> class VoitureDiesel(Voiture):
... def __init__(self, couleur):
... super(VoitureDiesel, self).__init__(couleur)
... self.moteur = 'diesel'
...
>>> berline = VoitureDiesel('grise')
>>> berline.couleur
'grise'
Sylvain Boureliou - sylvain.boureliou@gmail.com - www.boureliou.com