美文网首页
新式类和旧式类区别

新式类和旧式类区别

作者: MkTom | 来源:发表于2018-09-13 15:20 被阅读0次

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

➤新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索

➤新式类相同父类只执行一次构造函数,经典类重复执行多次。

其中:

➤截止到python2.1,只存在旧式类。旧式类中,类名和type是无关的:如果x是一个旧式类,那么x.class定义了x的类名,但是type(x)总是返回<type 'instance'>。这反映了所有的旧式类的实例是通过一个单一的叫做instance的内建类型来实现的,这是它和类不同的地方。

➤新式类是在python2.2为了统一类和实例引入的。一个新式类只能由用户自定义。如果x是一个新式类的实例,那么type(x)和x.class是一样的结果(尽管这不能得到保证,因为新式类的实例的class方法是允许被用户覆盖的)。

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

➤Python 3.x中默认都是新式类,经典类被移除,不必显式的继承object

Python2.x中:

class A:    
        pass
class B:    
        pass
class C(B): 
        pass
class D(C,A):
        pass

执行顺序为:D->C->B,->A

class A(object):
    pass
class B(object):
    pass
class C(object):
    pass
class D(A,B,C):
    pass

执行顺序为: D->A->B->C->Object

相关文章

  • 新式类和旧式类区别

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

  • Python 类

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

  • 新式类和经典类(旧式类)区别

    1、新式类都从object继承,经典类不需要。 2、新式类的MRO(method resolution order...

  • Python3.x:面向对象的三大特性之继承第二部分

    由于多继承是新式类和旧式类区别比较大的地方,所以这里单独写一篇文章来详细介绍 首先来了解一下新式类与旧式类写法上的...

  • Python多继承的执行顺序

    经典类和新式类的写法: class A: #经典类(旧式类)写法..................clas...

  • 2018-04-12

    新式类 和 旧式类 的区别 一:首先先来说说这两种类的共性; (1):顾名思义 ...

  • 新式类与旧式类

    作为补充知识.另外,以后版本定在python3,很多旧的写法了解就好了. 经典类 没有继承的类,注意:如果经典类被...

  • python2和python3的差别

    1、新式类和旧式类的差异,python3统一采用新式类,需要显式继承object类 2、python3中print...

  • 2018-06-13pychame使用技巧和类的一些知识

    一、加了object代表是新式类 新式类:广度优先,先找BC,再找D旧式类:深度优先,先BA,再CA Python...

  • 旧式类 vs. 新式类(三)

    转载须注明出处:简书@Orca_J35 4. 重要差异 引入新式类的主要动机是为了提供具有完整元模型(meta-m...

网友评论

      本文标题:新式类和旧式类区别

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