面对对象之继承 | Python

Posted 胡说八道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面对对象之继承 | Python相关的知识,希望对你有一定的参考价值。

1.Son继承Parent这个基类,可以直接调用基类中的方法,
  但是,如果要在子类中__init__()方法下添加新属性,
  需要主动调用基类的__init__()方法,因为,子类不会
  自动调用基类的__init__()方法。
  class Son(Parent):
    def __init__(self,name):
        Parent.__init__(self)
        self.name = Mic
    def run(self):
        pass
        
2.在基类方法之上,再添加一些操作:
  class Son(Parent):
    def run(self):
        print(---add---)
        Parent.run(self)
  # 注意:当前类创建的实例调用了run()方法,并不是在Parent类中实现;
  # --- >> 引入super()
  class Sun(Parent):
    def run(self):
        print(---add---)
        super(Son,self).run()
    # super()的优点在于,不需要指定基类继承方法,可以从所有的基类中
    # 找到这个方法继承;
  # -- >> 在python3中对super做了简化:
    super().run()
    
3.多继承中的属性查找顺序
  # 分别提供了两条线路:位置,特殊性:
  # 位置,表示继承时所在参数位置;
  # 特殊性,表示是否有父类,以及有几层父类;
  
  # 其实,基类查找的顺序是按照C3线性化算法确定的,而不是网上说的
  # 深度优先,广度优先这样简单的算法;
  # 在类继承设计的过程中,可能会出验证的问题,位置与特殊性冲突:
      class X(object):
        pass
      clas Y(X):
        pass
      class Z(X,Y):
        pass
  # 上面的例子就会报错;TypeError

 

以上是关于面对对象之继承 | Python的主要内容,如果未能解决你的问题,请参考以下文章

python中类与对象之继承

面对对象之特殊变量__slot__ | Python

面对对象特征之继承

python学习面对对象三大特性

JAVA面对对象三大特征之继承多态

javascript面对对象编程 之继承