Pour définir une méthode dans une classe, il suffit d'utiliser def et self (c'est ainsi que l’on appelle l'objet instancié : on doit y faire appel en premier paramètre de toutes les méthodes de la classe), comme l'illustre l'exemple suivant :
>>> class Voiture : ... couleur = "Rouge" ... etat = "arret" ... def demarrer(self) : ... self.etat = "marche" ... def arreter(self) : ... self.etat = "arret"
Une méthode a donc forcément au moins un paramètre (self : l’objet instancié).
Les méthodes spéciales déterminent un fonctionnement spécifique pour une classe lorsqu’elle est utilisée dans certaines opérations :
>>> class A : ... def __str__(self) : ... return "Je suis un objet de type A" ... >>> a = A() >>> str(a) Je suis un objet de type A
>>> class B: ... def __getitem__(self, i): ... return i**2 ... >>> b = B() >>> b[5] 25
Lorsqu'une classe est instanciée, la méthode spéciale __init__() est invoquée, avec en premier paramètre l’objet nouvellement instancié :
>>> class Voiture : ... def __init__(self, type) : ... self.type = type ...
Pour instancier un objet, on écrit donc :
>>> ma_voiture = Voiture('Ferrari')
Considérons l'exemple suivant :
>>> class Time: >>> def __init__(self, hh = 0, mm = 0, ss = 0): ... self.heure = hh ... self.minute = mm ... self.seconde = ss ... >>> rentree = Time(10, 30)
Alors :
On peut définir un destructeur grâce à la méthode spéciale __del__(). Cette méthode sera appelée par le garbage collector.
>>> class A : ... def __del__(self) : ... print "destruction"
Pour l'utiliser :
>>> a = A() >>> del a
Le code contenu dans un destructeur d’une classe A doit explicitement faire appel aux destructeurs des classes dont dérive A.
NB. En général, on peut se passer de définir les destructeurs, et laisser cette tâche à Python.