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