面向对象编程(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'>)
浙公网安备 33010602011771号