zoukankan      html  css  js  c++  java
  • super继承和普通继承

    一。普通继承

    >>> class A:
    ...     def __init__(self):
    ...             print 'Enter A'
    ...             print 'Leave A'
    ... 
    >>> class B(A):
    ...     def __init__(self):
    ...             print 'Enter B'
    ...             A.__init__(self)
    ...             print 'Leave B'
    ... 
    >>> class C(A):
    ...     def __init__(self):
    ...             print 'Enter C'
    ...             A.__init__(self)
    ...             print 'Leave C'
    ... 
    >>> class D(A):
    ...     def __init__(self):
    ...             print 'Enter D'
    ...             A.__init__(self)
    ...             print 'Leave D'
    ... 
    >>> class E(B,C,D):
    ...     def __init__(self):
    ...             print 'Enter E'
    ...             B.__init__(self)
    ...             C.__init__(self)
    ...             D.__init__(self)
    ...             print 'Leave E'
    ... 

      运行结果

    >>> E()
    Enter E
    Enter B
    Enter A
    Leave A
    Leave B
    Enter C
    Enter A
    Leave A
    Leave C
    Enter D
    Enter A
    Leave A
    Leave D
    Leave E
    <__main__.E instance at 0x108670560>
    >>> 

    二。super继承

    >>> class A(object):
    ...     def __init__(self):
    ...             print 'Enter A'
    ...             print 'Leave A'
    ... 
    >>> class B(A):
    ...     def __init__(self):
    ...             print 'Enter B'
    ...             super(B,self).__init__()
    ...             print 'Leave B'
    ... 
    >>> class C(A):
    ...     def __init__(self):
    ...             print 'Enter C'
    ...             super(C,self).__init__()
    ...             print 'Leave C'
    ... 
    >>> class D(A):
    ...     def __init__(self):
    ...             print 'Enter D'
    ...             super(D,self).__init__()
    ...             print 'Leave D'
    ... 
    >>> class E(B,C,D):
    ...     def __init__(self):
    ...             print 'Enter E'
    ...             super(E,self).__init__()
    ...             print 'Leave E'
    ... 

     运行结果

    >>> E()
    Enter E
    Enter B
    Enter C
    Enter D
    Enter A
    Leave A
    Leave D
    Leave C
    Leave B
    Leave E
    <__main__.E object at 0x10513bc10>

    三。结论

       除了代码简化了外,明白两者调用父类的次数和调用的顺序,其他不深入探讨.

  • 相关阅读:
    面试小结
    Everything工具使用
    记 · 工作一周年
    贝叶斯算法原理分析
    MySQL与Oracle主键Query性能测试结果
    K-meams文本聚类算法C++实现
    OPTICS光学算法
    页面添加内容后弹出框与跳转页面
    Webgrid参数格式
    页面2级分类
  • 原文地址:https://www.cnblogs.com/GH-123/p/7890070.html
Copyright © 2011-2022 走看看