héritage multiple

Un doctorant est membre du personnel. Il est aussi élève. Et les membres du personnel et les élèves sont des humains.

class membreDuPersonnel (humain)

# attributs nouveaux et redéfinitions d'attributs

class eleve (humain)

# attributs nouveaux et redéfinitions d'attributs

class doctorant (membreDuPersonnel, eleve)

# attributs nouveaux et redéfinitions d'attributs

doctorant est à la fois une sous-classe directe des classes membreDuPersonnel et eleve. Il y a héritage multiple.

Attention, un conflit peut apparaitre si un attribut n'est pas défini dans une classe (doctorant), mais dans chacune des classes mères (membreDuPersonnel et eleve). Et bien Python s'évite les complications. Il regarde d'abord si l'attribut est dans membre du Personnel, puis s'il n'est pas dans eleve, puis s'il n'est pas dans humain, puis ... Il ya un ordre de résolution de conflit d'héritage.

Dans le cas général. Profondeur d'abord, puis de gauche à droite. For most purposes, in the simplest cases, you can think of the search for attributes inherited from a parent class as depth-first, left-to-right, not searching twice in the same class where there is an overlap in the hierarchy. Thus, if an attribute is not found in DerivedClassName, it is searched for in Base1, then (recursively) in the base classes of Base1, and if it was not found there, it was searched for in Base2, and so on.

Remarque 1

Une exception est une classe

Remarque 2 pour ceux qui connaissent Java, C++, ...

Pas de notions en python de classe abstraite. Toutes les classes sont concrètes, à savoir complètes. elles sont instanviables)

Remarque 3 pour ceux qui connaissent Java, C++, ...

Pas de notion de public, private et protected. Tous les attributs d'une classe sont publics (utilisables via la notation pointée).


» Glossaire du langage python