鸭子打字

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