|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Duck:
- def quack(self):
- print('呱呱呱')
- def feathers(self):
- print('这个鸭子拥有灰白的羽毛。')
- class Person:
- def quack(self):
- print('你才是鸭子你们全家人是鸭子!')
- def feathers(self):
- print('这个人穿着一件鸭绒大衣。')
- 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 是鸭子类型的风格呢?
in_the_forest() 函数对参数 duck 只有一个要求:就是可以实现 quack() 和 feathers() 方法。然而 Duck 类和 Person 类都实现了 quack() 和 feathers() 方法,因此它们的实例对象 donald 和 john 都可以用作 in_the_forest() 的参数。这就是鸭子类型。
这句话到底该如何去理解啊?
在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。 在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。
|
|