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