美文网首页
python 经典类和新式类

python 经典类和新式类

作者: HHHHUA | 来源:发表于2018-09-27 21:20 被阅读14次

经典类

class A():
    ret = 1
    def __init__(self):
        pass
class B(A):
    def __init__(self):
        pass   
class C(A):
    ret = 2
    def __init__(self):
        pass           
class D(B, C):
    def __init__(self):
        pass #B->A->C         x = D()print x.ret输出为:1

新式类

class A(object):
    ret = 1
    def __init__(self):
        pass          
class B(A):
    def __init__(self):
        pass  
class C(A):
    ret = 2    
def __init__(self):
        pass          
class D(B, C):
    def __init__(self):
        pass    #B->C->A       x = D()print x.ret输出为:2

super()

class A(object):
    def __init__(self):
        print "A"         
class B(object):
    def __init__(self):
        print "B"          
class C(object):
    def __init__(self):
        print "C"  
class D(A,B,C):
    def __init__(self):
        super(D,self).__init__()
        super(A,self).__init__()
        super(B,self).__init__()
        super(C,self).__init__()
         X  = D()

会发现:
super(D,self).init()
执行的是A.init()

super(A,self).init()
执行的是B.init()

super(B,self).init()
执行的是C.init()

super(C,self).init()执行的是Object.init()
这是因为mro(D)为:[ D, A, B, C, Object]

Python 2.x中默认都是经典类,只有显式继承了object才是新式类, 使用了深度优先的方法
Python 3.x中默认都是新式类,不必显式的继承object, 使用的是广度优先的方法

相关文章

  • Python 类

    新式类和旧式类 在python2.x的版本中,有“新式类”和“旧式类(也叫做经典类)”之分。新式类是python2...

  • 新式类、经典类

    继承 object 类的是新式类,不继承 object 类的是经典类,在 Python 2.7 里面新式类和经典类...

  • python super用法 2018-01-28

    新式类,经典类 python3之后均称为新式类,默认继承object类 Python2.x版本分为:分新式类与经典...

  • Flask 2019-10-08

    python2与python3都有经典类和新式类这两种写法,在python2中经典类和新式类的. 继承方式不一...

  • 类的继承顺序

    python2新式类继承object的类python2经典类未继承任何类的python2新式类和python3的继...

  • 请简述python 经典类和新式类的区别?

    Python中类分为两种:经典类和新式类: 新式类都从object继承,经典类不需要。 新式类的MRO算法曹勇c3...

  • Python 中的新式/经典类

    Python 新式/经典类 新式/经典类的区别从Python2.2开始,Python 引入了 new style ...

  • 新式类和旧式类区别

    Python中类分两种:旧式类和新式类:➤新式类都从object继承,经典类不需要。 ➤新式类的MRO(metho...

  • python 2 中的新式类、经典类

    在Python 3.x中取消了经典类,默认都是新式类;但是在Python2.x中,是有区分新式类和经典类的,pyt...

  • python2与python3的经典类与新式类的继承

    python2与python3都有经典类和新式类这两种写法,在python2中经典类和新式类的继承方式不一样,在p...

网友评论

      本文标题:python 经典类和新式类

      本文链接:https://www.haomeiwen.com/subject/gwyyoftx.html