python 中的多态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
多态的基本思想是相同的操作可以作用于不同的对象。这个概念可以通过方法重写和鸭子类型来实现。
 
方法重写(Method Overriding)
在继承体系中,子类可以重写(覆盖)父类的方法,从而提供子类特有的实现。这样,即使不同的对象实现了不同的方法,它们仍然可以通过相同的接口进行调用。
 
示例:方法重写
python
Copy code
class Animal:
    def speak(self):
        pass
 
class Dog(Animal):
    def speak(self):
        return "Woof!"
 
class Cat(Animal):
    def speak(self):
        return "Meow!"
 
def make_animal_speak(animal):
    print(animal.speak())
 
dog = Dog()
cat = Cat()
 
make_animal_speak(dog)  # 输出:Woof!
make_animal_speak(cat)  # 输出:Meow!
在这个示例中,Dog和Cat类都继承自Animal类,并且它们都重写了Animal类中的speak方法。函数make_animal_speak可以接受任何Animal类的实例,并调用其speak方法。
 
鸭子类型(Duck Typing)
鸭子类型是一种动态类型系统的特性,它不检查对象的类型是否匹配,而是检查对象的行为是否符合预期。这意味着只要对象实现了所需的方法,就可以使用它。
 
示例:鸭子类型
python
Copy code
class Bird:
    def fly(self):
        return "Flying high!"
 
class Airplane:
    def fly(self):
        return "Flying fast!"
 
def make_it_fly(flying_object):
    print(flying_object.fly())
 
bird = Bird()
airplane = Airplane()
 
make_it_fly(bird)      # 输出:Flying high!
make_it_fly(airplane)  # 输出:Flying fast!
在这个示例中,Bird和Airplane类都实现了fly方法。函数make_it_fly不关心传递给它的对象是什么类型,只要该对象有一个fly方法,它就可以调用。
 
多态的优点
代码复用性高:可以编写更通用、更简洁的代码。
灵活性高:不同类型的对象可以通过相同的接口进行操作,便于扩展和维护。
易于维护:通过定义良好的接口,程序的逻辑结构更加清晰,便于理解和维护。
总结
多态是Python面向对象编程中的一个重要特性,它允许不同类的对象通过相同的接口进行操作,使得代码更加灵活和易于扩展。通过方法重写和鸭子类型,可以实现多态的行为,从而编写出更通用、更简洁、更易维护的代码。

  

posted @   GOZO  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示