• 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)去调用

  • 相关阅读:
    apue第16章笔记
    重构与重写
    架构方面的笔记
    多进程失败拉起的demo
    Elasticsearch match_phrase用法
    c++风格
    cocos2d-x 3.2 移植到android
    Mac 下配置 Cocos2d-x 3-x android 的环境
    解决最新版的ADT没有NDK选项的问题
    待飞日记(第六天和第七天)
  • 原文地址:https://www.cnblogs.com/tootooman/p/9224855.html
Copyright © 2020-2023  润新知