Classe mère et classe fille – Héritage
Script :
import string class Alphabet_majuscules (object): # classe mère def __init__(self): self.lettres = string.ascii_uppercase # équivalent à une chaîne reprenant tout l'alphabet avec la méthode upper () class Alphabet_minuscules (Alphabet_majuscules): # classe fille def __init__(self): Alphabet_majuscules.__init__(self) self.lettres = self.lettres.lower ()
Exécution :
>>> test = Alphabet_majuscules () >>> test.lettres 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> test2 = Alphabet_minuscules () >>> test2.lettres 'abcdefghijklmnopqrstuvwxyz' >>>
Commentaires :
class Alphabet_majuscules (object): vous construisez votre classe mère comme une classe normale et ordinaire !
self.lettres = string.ascii_uppercase importation de la constante « string.ascii_uppercase » du module « string » qui est l’alphabet en majuscules.
class Alphabet_minuscules (Alphabet_majuscules): en paramètre de la classe fille, le nom de la classe mère.
Alphabet_majuscules.__init__(self) dans le constructeur de la classe fille, importation du constructeur de la classe mère avec ses attributs.
-
en paramètre de la classe fille, le nom de la classe mère.
-
dans le constructeur de la classe fille, importation du constructeur de la classe mère avec ses attributs.
Démonstration de l’importation du constructeur de la classe mère dans le constructeur de la classe fille. Les attributs de l’objet de la classe mère peuvent être les attributs de l’objet de la classe fille :
Script modifié :
import string class Alphabet_majuscules (object): # classe mère def __init__(self): self.lettres_maj = string.ascii_uppercase # équivalent à une chaîne reprenant tout l'alphabet avec la méthode upper () class Alphabet_minuscules (Alphabet_majuscules): # classe fille def __init__(self): Alphabet_majuscules.__init__(self) self.lettres_min = self.lettres_maj.lower ()
Exécution :
>>> test = Alphabet_majuscules () >>> test.lettres_maj 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> test2 = Alphabet_minuscules () >>> test2.lettres_min 'abcdefghijklmnopqrstuvwxyz' >>> test2.lettres_maj 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>>
L’attribut de l’objet de la classe mère test peut être l’attribut de l’objet de la classe fille test2 :
test.lettres_maj et test2.lettres_maj
Classe mère, classe fille et classe petite-fille :
Script :
import string class Alphabet_majuscules (object): # classe mère def __init__(self): self.lettres = string.ascii_uppercase # équivalent à une chaîne reprenant tout l'alphabet en minuscules avec la méthode upper () # ou plus simplement une chaîne avec tout l'alphabet en majuscules class Alphabet_minuscules (Alphabet_majuscules): # classe fille def __init__(self): Alphabet_majuscules.__init__(self) self.lettres = self.lettres.lower () class Alphabet_tri (Alphabet_minuscules): # classe petite-fille def __init__(self): Alphabet_minuscules.__init__(self) self.voyelles = [] self.consonnes = [] for lettre in self.lettres : if lettre in "aeiouy": self.voyelles.append (lettre) else : self.consonnes.append (lettre) def listes_vers_chaines (self) : self.voyelles_chaine = "".join (self.voyelles) self.consonnes_chaine = "".join (self.consonnes)
Exécution :
>>> test = Alphabet_majuscules () >>> test.lettres 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> test2 = Alphabet_minuscules () >>> test2.lettres 'abcdefghijklmnopqrstuvwxyz' >>> test3 = Alphabet_tri () >>> test3.lettres 'abcdefghijklmnopqrstuvwxyz' >>> test3.voyelles ['a', 'e', 'i', 'o', 'u', 'y'] >>> test3.consonnes ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'] >>> test3.listes_vers_chaines () >>> test3.voyelles_chaine 'aeiouy' >>> test3.consonnes_chaine 'bcdfghjklmnpqrstvwxz' >>>
Alphabet_tri ( ) :
J’ai ajouté cette classe « petite-fille » de Alphabet_majuscules ( ) et « fille » de Alphabet_minuscules ( ) dans laquelle j’ai créé une méthode listes_vers_chaines ( ) en plus du constructeur.