zoukankan      html  css  js  c++  java
  • 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()只能在新式类用到

    报错:

    封装:
     
    封装数据
    封装功能
     

     

     进一步优化:

    定制自己的属性:

     

  • 相关阅读:
    .htaccess
    windows快速搭建wamp环境,多站点域名访问
    require与include的区别
    PHP常用操作的字符串函数
    高效做事的习惯
    成功?!
    面向对象程序设计
    失落 绝望
    jquery学习收获
    XML操作类
  • 原文地址:https://www.cnblogs.com/metianzing/p/7121947.html
Copyright © 2011-2022 走看看