Chapitre d’ouvrage

Chapitre 27. Fonction super

Pages 577 à 600

Citer ce chapitre


  • Gomez, R.
(2022). Chapitre 27. Fonction super. Le petit Python orienté objet : Programmation orientée objet avec Python 3 (p. 577-600). Ellipses. https://stm.cairn.info/le-petit-python-oriente-objet--9782340064065-page-577?lang=fr.

  • Gomez, Richard.
« Chapitre 27. Fonction super ». Le petit Python orienté objet Programmation orientée objet avec Python 3, Ellipses, 2022. p.577-600. CAIRN.INFO, stm.cairn.info/le-petit-python-oriente-objet--9782340064065-page-577?lang=fr.

  • GOMEZ, Richard,
2022. Chapitre 27. Fonction super. In : Le petit Python orienté objet Programmation orientée objet avec Python 3. Paris : Ellipses. Références sciences, p.577-600. URL : https://stm.cairn.info/le-petit-python-oriente-objet--9782340064065-page-577?lang=fr.

Définition 27.1. Soit X une classe. La superclasse de X lors de la résolution d’un nom qualifié est la classe qui se trouve juste après X dans la mro suivie.
On ne confondra pas la superclasse de X avec ses superclasses. Les superclasses de X sont les ancêtres de X et il arrive parfois que la superclasse de X ne soit pas un ancêtre de X (sic).
Supposons que a est de type A et Python essaye de résoudre le nom a.nom. Il suit alors l’ordre donné par la linéarisation de A (voir chapitre précédent). Supposons que X est un item de cette linéarisation. La superclasse de X est, par définition, l’item qui vient juste après dans cette linéarisation.
La terminologie est trompeuse : on devrait dire la superclasse de X dans la linéarisation .
Exemple. On crée ex nihilo des classes A, B, C, D et E puis des classes U(A,B,C), V(D,B,E), W(D,A) et Z(U,V,W). Alors la linéarisation de V est L(V) = VDBEO, et celle de Z est L(Z) = ZUVWDABCEO, ainsi :
tandis que
Pour chaque mro dans laquelle figure D, on a une superclasse de D : pour L(D) c’est O, pour L(V) c’est B, pour L(W) c’est A, et pour L(Z) c’est A.
On constate ici que la superclasse de D n’est pas forcément un ancêtre de D. Voici un exemple plus simple :
Affichons la linéarisation de Z :
La superclasse de X dans la linéarisation de Z est Y, ce n’est pas un ancêtre, mais un coparent. La superclasse de X dans la linéarisation de X est object.
D’un point de vue rigoureux, super est un type. On se sert d…


Date de mise en ligne : 23/02/2023

Ce chapitre est en accès conditionnel

Acheter cet ouvrage

35,99 €

828 pages, format électronique (HTML et feuilletage, par chapitre)

Acheter ce chapitre

5,00 €

24 pages format électronique (HTML et feuilletage)
Membre d'une institution cliente ?