鴨子打字
由於其動態型別系統,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!
鴨子有白色和灰色的羽毛。
這個人模仿一隻鴨子。
這個人從地上取下羽毛並展示它。