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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

python之面向对象(继承的实现原理及封装)

Python基础(17)_面向对象程序设计(抽象类继承原理封装多态,绑定方法)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

面向对象之继承与派生

面向对象之继承与派生

面向对象之继承与派生