首页 > 代码库 > Python--面向对象的程序设计之继承实现的原理(继承顺序)、封装、property

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

技术分享

技术分享

报错:

技术分享

封装:
 
封装数据
封装功能
 
技术分享

技术分享

技术分享

技术分享

技术分享

 

技术分享

技术分享

技术分享

技术分享

 

 技术分享

技术分享

技术分享

技术分享

 

技术分享

技术分享

技术分享

 

 进一步优化:

技术分享

定制自己的属性:

技术分享

 

 技术分享

技术分享

 

Python--面向对象的程序设计之继承实现的原理(继承顺序)、封装、property