创建一个江数play_soundO,它接受任何有make_somndO方法的对象。无需明确声明类型, 只要对象实现了make_sound0方法。这就是典型的Python鸭子类型多态。Python
时间: 2024-12-16 10:25:55 浏览: 9
在Python中,我们通常使用鸭子类型(Duck Typing)的概念来实现类似的功能。"如果它走路像鸭子,游泳也像鸭子,那么我们就说它是鸭子"。创建一个函数如`play_sound`,可以接受任何实现了`make_sound`方法的对象,不需要硬编码特定类型的限制。这样做的示例如下:
```python
def play_sound(sound_object):
if hasattr(sound_object, 'make_sound'): # 检查对象是否有make_sound方法
sound_object.make_sound() # 如果有,调用该方法播放声音
else:
print("对象没有make_sound方法,无法播放声音")
# 示例:
class Quacker:
def make_sound(self):
print("Quack!")
duck = Quacker()
play_sound(duck) # 输出 "Quack!"
# 这里甚至可以尝试播放非鸭子对象的声音,如果它们实现了make_sound就不会报错
class NonQuacker:
def make_sound(self):
print("Some other sound")
invalid_duck = NonQuacker()
play_sound(invalid_duck) # 输出 "Some other sound"
```
阅读全文