• 面向对象之多态


    一、何为多态?

    多态就是指一个事物有多种形态

    文件有多种形态:文本文件,可执行文件等

    import abc
    class File(metaclass=abc.ABCMeta): #同一类事物:文件
    @abc.abstractmethod
    def click(self):
    pass

    class Text(File): #文件的形态之一:文本文件
    def click(self):
    print('open file')

    class ExeFile(File): #文件的形态之二:可执行文件
    def click(self):
    print('execute file')

    二、什么是多态性绑定(在继承的背景下使用,有时也成为多态性)

    多态性指的是在不考虑实例类型的情况下使用实例

    比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作。二者消息一样,但是执行结果完全不一样。这个就称为多态性。

    三、多态性的好处

    1.增加了程序的灵活性:不论对象千变万化,使用者都是同一个形式去调用

    2.增加了程序的可扩展性:通过继承类创建了一个新的类,使用者不需要更改自己的代码,还是用之前的func函数去调用

    class Cat(Animal): #属于动物的另外一种形态:猫

      def talk(self):
      print('say miao')

    def func(animal): #对于使用者来说,自己的代码根本无需改动
      animal.talk()

    cat1=Cat() #实例出一只猫
    func(cat1) #甚至连调用方式也无需改变,就能调用猫的talk功能
    say miao

    这样我们新增了一个形态Cat,由Cat类产生的实例cat1,使用者可以在完全不需要修改自己代码的情况下。使用和人、狗、猪一样的方式调用cat1的talk方法,即func(cat1)

    四、鸭子类型

    python崇尚鸭子类型,如果看起来像鸭子,叫声像鸭子,而且走路也像鸭子,那么他就是鸭子

    程序员通常根据这种行为来编写程序。比如:如果想编写现有对象的自定义版本,就可以继承该对象

    也可以创建一个外观和行为相像,但是与行为没有任何关系的全新对象,后者通常用于保存程序组件的松耦合度

    #二者都像鸭子,二者看起来都像文件,因而就可以当文件一样去用
    class TxtFile:
    def read(self):
    pass

    def write(self):
    pass

    class DiskFile:
    def read(self):
    pass
    def write(self):
    pass

  • 相关阅读:
    CF819B Mister B and PR Shifts
    HDU5969 最大的位或
    UVA1464 Traffic Real Time Query System
    [SCOI2010]连续攻击游戏
    [USACO11JAN] Roads and Planes
    [POJ3613] Cow Relays(Floyd+矩阵快速幂)
    洛谷P3237 [HNOI2014]米特运输(树形dp)
    awk 正则表达式、正则运算符详细介绍
    awk单行脚本快速参考
    Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10460090.html
Copyright © 2020-2023  润新知