Python--面向对象的程序设计之继承实现的原理(继承顺序)、封装、property
抽象类补充:
import abc class Parent(metaclass= abc.ABCMeta): x=1 @abc.abstractclassmethod def foo(self): pass @abc.abstractclassmethod def bar(self): pass class Child(Parent ): def foo(self): pass def bar(self): pass c=Child() print(c.x) 运行结果: 1
注意1:父类的变量可以遗传给子类
注意2:抽象类:本身不能被实例化,也不应该被实例化,它的作用就是定义标准,并不用具体实现。
继承实现的原理(继承顺序)
1 继承顺序
class A(object): def test(self): print('from A') class B(A): def test(self): print('from B') class C(A): def test(self): print('from C') class D(B): def test(self): print('from D') class E(C): def test(self): print('from E') class F(D,E): # def test(self): # print('from F') pass f1=F() f1.test() print(F.__mro__) #只有新式才有这个属性可以查看线性列表,经典类没有这个属性 #新式类继承顺序:F->D->B->E->C->A #经典类继承顺序:F->D->B->A->E->C #python3中统一都是新式类 #pyhon2中才分新式类与经典类 继承顺序
子类调用父类的方法:
super()只能在新式类用到
报错:
封装:
封装数据
封装功能
进一步优化:
定制自己的属性: