面向对象编程(9)继承

在面向对象中有这样的理念,即:子类可以继承父类中的方法和类变量
(不是拷贝一份,父类的还是属于父类,子类可以继承而已)。
也可以加基类派生类

class Base:

    def func(self):
        print("Base.func")

class Son(Base):
    
    def show(self):
        print("Son.show")
        
s1 = Son()
s1.show()
s1.func() # 优先在自己的类中找,自己没有才去父类。

s2 = Base()
s2.func()
  • 执行对象.方法时,优先去当前对象所关联的类中找,没有的话才去她的父类中查找。
  • Python支持多继承:先继承左边、再继承右边的。
  • self到底是谁?去self对应的那个类中去获取成员,没有就按照继承关系向上查找 。

多重继承

class C(object):
    pass

class B(object):
    pass

class A(B, C):
    pass

可以通过mro()获取当前类的继承关系(找成员的顺序)。

print( A.mro() )   
# [<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>]
print( A.__mro__ )
# (<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>)
posted @ 2021-12-05 23:49  下个ID见  阅读(42)  评论(0)    收藏  举报