Python之多态

什么是多态?

多态指的是一类事物有多种形态

动物有多种形态:人,狗,猪

多态:指的是定义角度

多态性:指的是使用角度


import abc
# 多态:同一种事物的多种形态,动物分为:猪类,人类
class Animal(metaclass=abc.ABCMeta):   
    @abc.abstractmethod  # 子类必须继承
    def run(self):
        pass


class pig(Animal):
    def run(self):   # 继承父类必须有这个方法
        print('pig is walking')
    pass

class pepple(Animal):
    def run(self):
        print('pepple is walking')



peo1=pepple()
pig1=pig()
# peo1.run()
# pig1.run()


# 多态性:一种调用方式,多种执行结果
依赖于:
'''
1、继承
'''
# 定义统一的接口,可以传入不同类型的值,但是调用的逻辑都一样,执行的结果却不一样
def fun(obj):  # obj 这个参数没有类型限制,可以传入不同的值
    obj.run()  # 大家都继承 animal 类,都有 run,但执行的结果不一样

fun(peo1)
fun(pig1)

pepple is walking
pig is walking
不同类型的值,调用同一接口,出现不同的结果
==================

l=[1,2,3,4]
s='hello'
t=(4,5,6,7,8)   # 3个不同类型的值
def fun1(obj):  # 定义统一接口
    return obj.__len__()

print(fun1(l))
print(fun1(s))
print(fun1(t))
返回不一样的结果
4
5
5


为什么要用多态性(多态性的好处)

其实大家从上面多态性的例子可以看出,我们并没有增加什么新的知识,也就是说python本身就是支持多态性的,这么做的好处是什么呢?

1.增加了程序的灵活性

  以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

2.增加了程序额可扩展性

  通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用

posted @ 2018-06-25 16:23  H-JIACHENG  阅读(2386)  评论(0编辑  收藏  举报