多态(三大特性)
# 简介
python中多态的作用:让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数
继承是多态实现的前提
多态的好处:提高代码的复用性
Python中多态的特点
1、只关心对象的实例方法是否同名,不关心对象所属的类型; 2、对象所属的类之间,继承关系可有可无; 3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强; 4、多态是调用方法的技巧,不会影响到类的内部设计。
Python 中的多态性是对象 (opens new window)具有多种形式的能力。简而言之,多态性允许我们以多种不同的方式执行相同的操作。
例如,Jessa 在办公室时充当员工。然而,当她在家的时候,她就像一个妻子。此外,她在不同的地方以不同的方式代表自己。因此,同一个人根据情况采取不同的形式。
# 鸭子类型
- 多态, 不同的 子类对象调用 相同的 父类方法,产生 不同的 执行结果,可以增加代码的外部 调用灵活度
- 多态以 继承 和 重写 父类方法 为前提
- 多态是调用方法的技巧,不会影响到类的内部设计
import abc
class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物
@abc.abstractmethod
def talk(self):
pass
class Cat(Animal): # 动物的形态之一:猫
def talk(self):
print('say miaomiao')
class Dog(Animal): # 动物的形态之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): # 动物的形态之三:猪
def talk(self):
print('say aoao')
c = Cat()
d = Dog()
p = Pig()
def func(obj):
obj.talk()
func(c)
func(d)
func(p)
"""
say miaomiao
say wangwang
say aoao
"""
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
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
编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21