Classe mère et classe fille – Héritage

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *