zoukankan      html  css  js  c++  java
  • python新生类和经典类简单说明

    经典类:
    #!/usr/bin/env python
    #*-* coding:utf-8 *-*
    class A():
        def __init__(self):
            print 'my name is GF'
       
        def test(self):
            print 'this is ====A====='
    class B(A):
        def __init__(self):
            print 'my name is BFather'
    class C(A):
        def  __init__(self):
            print 'my name is Cfather'
       
        def test(self):
            print 'this is ======C======'
    class D(B,C):
        def  __init__(self):
            print 'my name is D'
    t1 =D()
    t1.test()
    执行效果:
    my name is D
    this is ======A======
    #继承关系,先找B,如果B没有则找A.(深度优先)
    

      

     
    新生类:
    #!/usr/bin/env python
    #*-* coding:utf-8 *-*
    class A(object):
        def __init__(self):
            print 'my name is GF'
       
        def test(self):
            print 'this is ====A====='
    class B(A):
        def __init__(self):
            print 'my name is BFather'
    class C(A):
        def  __init__(self):
            print 'my name is Cfather'
       
        def test(self):
            print 'this is ======C======'
    class D(B,C):
        def  __init__(self):
            print 'my name is D'
    t1 =D()
    t1.test()
     
    执行结果
    my name is D
    this is ======C======
    #继承关系,先找B,如果B没有则找C(广度优先)
     
    当然,class D(B,C) 这里是先执行B,在执行C的。
     
    小结:经典类深度优先,新生类广度优先。
    class A(object):
        def __init__(self):
            print 'my name is GF'
    
        def test(self):
            print 'this is ====A====='
    class B(A):
        def __init__(self):
            print 'my name is BFather'
    class C(A):
        def  __init__(self):
            print 'my name is Cfather'
    
        def test(self):
            print 'this is ======C======'
    class D(B,C):
        def  __init__(self):
            print 'my name is D'
            super(D,self).__init__()
    t1 =D()
    t1.test()
    
    这里执行父类的构造函数,可以使用super方法,这也是新生类的特点。
    如果使用经典类的话,那么调用父类的构造函数或者是方法,只能使用父类.方法(self)的方法
    

      

    小结:新生类是支持super方式调用父类的方法。

     
     
     
  • 相关阅读:
    HDU 2089 不要62
    NOIP 2012 疫情控制
    提高工作效率的shell工具
    log loss与ctr预估
    推荐系统
    浮点数的间隙
    graphviz初学入门指南
    sparse_hash_map、dense_hash_map和sparsetable的实现细节
    每天离不开的工具vim
    安利开发利器 -- tmux
  • 原文地址:https://www.cnblogs.com/lin1/p/8270574.html
Copyright © 2011-2022 走看看