python多态性概念示例

python多态性概念示例,python,Python,我已经浏览了很多链接,但是使用python理解多态性最简单的方法是什么?有没有简单的例子?从我的理解来看,多态性是一个概念,一个对象可以采用不止一种形式。有没有人能让我知道简单的例子而不是复杂的 这看起来是一个简单的好例子: 从维基百科文章中复制的示例: 顺便说一句,python使用duck类型实现多态性,如果您想了解更多,请搜索该短语。静态语言主要依赖继承作为实现多态性的工具。 另一方面,动态语言依赖于duck类型。支持多态性而不使用继承。在此上下文中,您需要在每个扩展类中实现相同的一组相

我已经浏览了很多链接,但是使用python理解多态性最简单的方法是什么?有没有简单的例子?从我的理解来看,多态性是一个概念,一个对象可以采用不止一种形式。有没有人能让我知道简单的例子而不是复杂的


这看起来是一个简单的好例子:

从维基百科文章中复制的示例:


顺便说一句,python使用duck类型实现多态性,如果您想了解更多,请搜索该短语。

静态语言主要依赖继承作为实现多态性的工具。 另一方面,动态语言依赖于duck类型。支持多态性而不使用继承。在此上下文中,您需要在每个扩展类中实现相同的一组相关方法

从维基百科鸭子打字页面

 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(duck):
    duck.quack()
    duck.feathers()

def game():
    donald = Duck()
    john = Person()
    in_the_forest(donald)
    in_the_forest(john)

game()
试着考虑具有协议(一组方法)的对象以及具有相同协议的对象之间的互换性

从python.org:

一种编程风格,它不查看对象的类型来 确定是否有正确的接口;相反,方法或 属性被简单地调用或使用(“如果它看起来像鸭子 像鸭子一样呱呱叫,它一定是鸭子。”)强调接口 与特定类型不同,设计良好的代码可以提高其性能 通过允许多态替换实现灵活性。Duck类型避免了 使用type()或isinstance()进行测试。(但是,请注意,duck键入 可以用抽象基类来补充。)相反,它通常 使用hasattr()测试或EAFP编程

 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(duck):
    duck.quack()
    duck.feathers()

def game():
    donald = Duck()
    john = Person()
    in_the_forest(donald)
    in_the_forest(john)

game()