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()只能在新式类用到

报错:

封装:
 
封装数据
封装功能
 

 

 

 

 

 

 进一步优化:

定制自己的属性:

 

 

 

posted @ 2017-07-05 16:09  始怡  阅读(233)  评论(0编辑  收藏  举报