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

    报错:

    封装:
     
    封装数据
    封装功能
     

     

     进一步优化:

    定制自己的属性:

     

  • 相关阅读:
    2-字符串篇(4)
    1-数组篇(2)
    Neo4j-电影图(演员与电影之间的流行文化联系)
    NLP(相关资料)
    Oracle中的rank()函数使用
    PostgreSQL入门
    风格迁移论文理解--A Neural Algorithm of Artistic Style
    【Math】复数表示和傅里叶变换
    github资源使用--程序员必备
    【TF-2-3】Tensorflow-可视化(TensorBoard)
  • 原文地址:https://www.cnblogs.com/metianzing/p/7121947.html
Copyright © 2011-2022 走看看