python新式类和旧式类

 

首先:

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

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


其次:

------新式类对象可以直接通过__class__属性获取自身类型:type

------继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧;新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动

------新式类增加了__slots__内置属性, 可以把实例属性的种类锁定到__slots__规定的范围之中

------新式类增加了__getattribute__方法

 

 

定义新式类的方式:

class A(object):  # A是新式类,因为显式继承object
    pass

class B(A):  # B是新式类,因为B的基类A是新式类
    pass

class A(object):    #A是新式类,因为显式继承object
    def __init__(self):
        pass
    def save(self):
        print("This is from A")
class B(A):          #B是新式类,因为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 C

 





 

posted @ 2017-09-13 10:40  _Cohen  阅读(135)  评论(0)    收藏  举报