1.新式类与经典类
创新互联公司成立于2013年,我们提供高端成都网站建设公司、成都网站制作、成都网站设计、网站定制、全网营销推广、成都小程序开发、微信公众号开发、营销推广服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都花箱企业提供源源不断的流量和订单咨询。在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性;反之,即不由任意内置类型派生出的类,则称之为“经典类”。
“新式类”和“经典类”的区分在Python 3之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”。
官方文档 https://www.python.org/doc/newstyle/
2.继承顺序的区别
主要是在多重继承时才会遇到这个问题。
经典类的钻石继承是深度优先,即从下往上搜索;新式类的继承顺序是采用C3算法(非广度优先)。
对经典类进行代码验证(所有经典类的代码必须在Python2下运行,下同),ClassicClassB 继承自 ClassicClassA,SubClassicClass继承自ClassicClassB,ClassicClassC:
class ClassicClassA(): var = 'Classic Class A' class ClassicClassB(ClassicClassA): pass class ClassicClassC(): var = 'Classic Class C' class SubClassicClass(ClassicClassB, ClassicClassC): pass if __name__ == '__main__': print(SubClassicClass.var)