Python > Les classes > Méthodes et primitives

Constructeur et destructeur

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

Destructeur

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 :(

Méthodes spéciales

Il existent différentes méthodes spéciales permettant de faire varier le comportement des objets.

Appel des méthodes parentes

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