Python > Les classes > Définition d'une classe

Définition

Le mot réservé class permet de définir un modèle en associant un certain nombre de variables (attributs) et de fonctions (méthodes) à un nom.

>>> class Voiture(object):
...     couleur = 'Verte'
...     etat = 'arret'
...     def demarrer(self):
...         self.etat = 'marche'
...     def arreter(self):
...         self.etat = 'arret'
...
>>> voiture1 = Voiture()
>>> voiture1.couleur
'Verte'
>>> voiture1.etat
'arret'
>>> voiture1.demarrer()
>>> voiture1.etat
'marche'

Toutes les variables (attributs) et les fonctions (méthodes) placées dans le niveau d'indentation de la classe en deviennent des membres. voiture1 est une instance de la classe Voiture.

Héritage

Python permet de définir des classes dérivées très simplement.

>>> class Polo(Voiture):
...     pass
...
>>> polo1 = Polo()
>>> polo1.demarrer()

Héritage multiple

Python prend en charge l'héritage multiple en laissant la possibilité de lister plusieurs classes parentes dans la définition.

>>> class Animal(object):
...     nom = 'cheval'
...     def affiche(self):
...         print self.nom
...
>>> class Aliment(object):
...     nom = 'avoine'
...     def bio(self):
...         print 'oui'
...
>>> class Ferme(Animal, Aliment):
...     pass
...
>>> dir(Ferme)
['__class__', ..., 'affiche', 'bio', 'nom']
>>> ferme = Ferme()
>>> ferme.nom
'cheval'
>>> ferme.affiche()
cheval
>>> ferme.bio()
oui

Surcharge des attributs

Toutes les méthodes et attributs de données peuvent être surchargés, en utilisant la même signature.

>>> class Animal(object):
...     type = 'animal'
...     def affiche(self):
...         print self.type
...
>>> class Cheval(Animal):
...     def affiche(self):
...         print 'Cheval (%s)' % self.type
...
>>> c = Cheval()
>>> c.affiche()
Cheval (animal)

Sylvain Boureliou - sylvain.boureliou@gmail.com - www.boureliou.com