Initial commit
This commit is contained in:
64
source/07-objects/inheritance/polymorphism.py
Normal file
64
source/07-objects/inheritance/polymorphism.py
Normal file
@ -0,0 +1,64 @@
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class Animal(object):
|
||||
"""
|
||||
Classe de base pour tous les animaux.
|
||||
|
||||
"""
|
||||
pattes: int = None
|
||||
vertebre: Optional[bool] = None
|
||||
|
||||
def manger(self):
|
||||
"""
|
||||
Méthode de base pour que l'animal mange.
|
||||
|
||||
On ne définit aucun comportement particulier ici.
|
||||
|
||||
"""
|
||||
print("Je suis un animal et je mange.")
|
||||
|
||||
|
||||
class Chien(Animal):
|
||||
"""
|
||||
Classe pour le chien.
|
||||
|
||||
"""
|
||||
pattes: int = 4
|
||||
vertebre = True
|
||||
|
||||
def manger(self):
|
||||
"""
|
||||
Méthode pour faire manger le chien.
|
||||
|
||||
"""
|
||||
super().manger() # Exécute le code ligne 19
|
||||
print("Je dirais même plus *wouf* ! Je suis un chien qui mange.")
|
||||
|
||||
|
||||
class Escargot(Animal):
|
||||
"""
|
||||
Classe pour l'escargot.
|
||||
|
||||
"""
|
||||
pattes: int = 0
|
||||
vertebre = False
|
||||
|
||||
def manger(self):
|
||||
"""
|
||||
Méthode pour faire manger l'escargot.
|
||||
|
||||
"""
|
||||
print("Slurp *mange, mais on ne sait pas comment*")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Créer des nouvelles instances d'animaux
|
||||
escargot = Escargot()
|
||||
chien = Chien()
|
||||
# Et voir comment ça se comporte quand on appelle la méthode `manger`.
|
||||
# Le fait que plusieurs classes héritant d'une autre classe ont des comportements
|
||||
# différents pour les mêmes méthodes s'appelle du polymorphisme.
|
||||
# Les méthodes peuvent aussi avoir des arguments différents mais le même nom.
|
||||
print(escargot.manger())
|
||||
print(chien.manger())
|
Reference in New Issue
Block a user