美文网首页
python新式类和经典类的区别?

python新式类和经典类的区别?

作者: 把早晨六点的太阳留给我 | 来源:发表于2018-03-21 15:03 被阅读0次
    首先:

    Python 2.x中默认都是经典类,只有显式继承了object才是新式类

    Python 3.x中默认都是新式类,不必显式的继承object

    其次

    新式类对象可以直接通过class属性获取自身类型:type
    继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧;新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动
    -新式类增加了slots内置属性, 可以把实例属性的种类锁定到slots规定的范围之中
    新式类增加了getattribute方法

    再然后

    在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索。

    最后

    实例

    class A():
        def __init__(self):
            pass
        def save(self):
            print "This is from A"
    class B(A):
        def __init__(self):
            pass
    class C(A):
        def __init__(self):
            pass
        def save(self):
            print  "This is from C"
    class D(B,C):
        def __init__(self):
            pass
    fun =  D()
    fun.save()
    
    经典类的答案: This is from A
    新式类的答案: This is from C
    

    相关文章

      网友评论

          本文标题:python新式类和经典类的区别?

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