鴨子打字

由於其動態型別系統,Python 中可用的鴨子打字形式沒有繼承的多型性。這意味著只要類包含相同的方法,Python 直譯器就不會區分它們,因為呼叫的唯一檢查是在執行時進行的。

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)

輸出是:

Quaaaaaack!
鴨子有白色和灰色的羽毛。
這個人模仿一隻鴨子。
這個人從地上取下羽毛並展示它。