鸭子打字
由于其动态类型系统,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!
鸭子有白色和灰色的羽毛。
这个人模仿一只鸭子。
这个人从地上取下羽毛并展示它。