zoukankan      html  css  js  c++  java
  • 继承与多态

    继承

    基本架构

    #父类(基类)
    class Base:
        def f1(self):
            print("yang")
    #子类(派生类)
    class Foo(Base):
        def f2(self):
            print("zi")
        #or
        def f1(self):
            print("liang")
    #创建一个子类的对象
    obj = Foo()
    #执行对象,方法时,优先在自己的类中找,如果没有就在父类中找
    obj.f2()
    obj.f1()#在父类中寻找,如果子类中有f1则在优先用自己的
    #父类不能继承子类
    
    • 应用场景
      • 多个类中,如果有多个公共的方法,可以放到基类中避免重复编写

    继承关系中,查找方法的顺序

    • #示例一
      #父类
      class Base:
          def f1(self):
              print("base.f1")
      #子类
      class Foo(Base):
          def f2(self):
              self.f1() #此处的self为obj
              print("foo.f2")
      
      obj = Foo()
      obj.f2()
      
      #示例二
      #父类
      class Base:
          def f1(self):
              print("base.f1")
      #子类
      class Foo(Base):
          def f2(self):
              self.f1() #此处的self为obj
              print("foo.f2")
          def f1(self):
              print("foo.f1")
      
      obj = Foo()
      obj.f2()
      #结果
      #foo.f1
      #foo.f2
      
      #示例三
      #父类
      class Base:
          def f1(self):
              self.f2()
              print("base.f1")
          def f2(self):
              print("base.f2")
      #子类
      class Foo(Base):
          def f2(self):
              print("foo.f2")
      
      obj = Foo()
      obj.f1()
      #结果
      #foo.f2
      #base.f1
      
    • 注意事项

      • self到底是谁?
      • self是哪个类创建的,就从此类中开始找,最后才遵循自己没有就找父类
      • 多个继承从左至右,依次查找

    多态(多种形态)(鸭子模型)

    • def func(arg):#arg的形态多种多样只要满足可以切片即可
          v = arg[-1]
          print(v)
      
    • 鸭子模型

      • 对于一个函数,python对于参数的类型不会限制,那么传入参数时就可以是各种类型,在函数中如果有。例如:arg.send方法,那么就是对于传入类型的一个限制(必须有send方法)。就是鸭子模型,类似于上述的函数我们认为只要能呱呱叫的就是鸭子(只要有send方法,就是我们想要的类型)
  • 相关阅读:
    WCF学习笔记
    下拉框层级绑定
    js在IE可以运行,在Firefox 不运行
    ajax 基础
    Asp.net Mvc Web Api 学习(一)
    阅读暗时间的笔记与心得
    阅读暗时间的心得与笔记
    阅读暗时间的笔记与心得(结束篇)
    阅读暗时间的笔记与心得
    阅读暗时间的心得与笔记
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13722951.html
Copyright © 2011-2022 走看看