Python Language Duck Typing


Exemple

Polymorphisme sans héritage sous forme de dactylographie comme disponible en Python grâce à son système de typage dynamique. Cela signifie que tant que les classes contiennent les mêmes méthodes, l'interpréteur Python ne les distingue pas, car la seule vérification des appels a lieu au moment de l'exécution.

class Duck:
    def quack(self):
        print("Quaaaaaack!")
    def feathers(self):
        print("The duck has white and gray feathers.")

class Person:
    def quack(self):
        print("The person imitates a duck.")
    def feathers(self):
        print("The person takes a feather from the ground and shows it.")
    def name(self):
        print("John Smith")

def in_the_forest(obj):
    obj.quack()
    obj.feathers()

donald = Duck()
john = Person()
in_the_forest(donald)
in_the_forest(john)

La sortie est la suivante:

Quaaaaaack!
Le canard a des plumes blanches et grises.
La personne imite un canard.
La personne prend une plume du sol et la montre.