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

    报错:

    封装:
     
    封装数据
    封装功能
     

     

     进一步优化:

    定制自己的属性:

     

  • 相关阅读:
    【Quartz】工作原理
    【Quartz】基本原理
    【Quartz】一个小Demo
    【转载】基于Redis实现分布式锁
    【转载】Java 9 新特性——模块化
    【转载】一致性哈希
    大型网站架构演进
    分布式系统概述
    加入tkmybatis,进行批量插入
    mysql,SqlServer批量插入
  • 原文地址:https://www.cnblogs.com/metianzing/p/7121947.html
Copyright © 2011-2022 走看看