美文网首页
Python2和Python3中新式类、经典类(旧式类)的区别

Python2和Python3中新式类、经典类(旧式类)的区别

作者: JK9 | 来源:发表于2018-01-25 21:27 被阅读0次
  • 今天学习Django时,遇到了类的多继承问题,由于自己是从Python3入门学习的,所以在类的声明时并未留意到基类object的书写与否 是否会对程序结果造成影响(事实上,并不会有所影响),但 是,在Python2中,基类object书写与否 会对结果造成很大的影响,这个知识点涉及到新式类、经典类的问题,虽然之前有所耳闻,但只限于耳闻。。。既然今天遇到了,就要好好研究下python2和python3中的新式类、经典类问题。

    在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:
    class Person(object):pass
    class Person():pass
    class Person:pass
    三种写法并无区别,推荐第一种

    但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:
    class Person(object):pass 新式类写法
    class Person():pass 经典类写法
    class Person:pass 经典类写法

    他们最明显的区别在于继承搜索的顺序发生了改变,即
    经典类多继承搜索顺序(深度优先):
    先深入继承树左侧查找,然后再返回,开始查找右侧,如图所示:

    python2下旧式类搜索顺序--深度优先.jpg python2下旧式类搜索顺序---深度优先.jpg 新式类多继承搜索顺序(广度优先):
    先在水平方向查找,然后再向上查找,如图所示:
    python2下新式类搜索顺序--广度优先.jpg python2下新式类搜索顺序---广度优先.jpg (python3和python2的区别: https://www.zhihu.com/question/19698598
    https://www.zhihu.com/question/22475395

相关文章

  • Flask 2019-10-08

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

  • 类的继承顺序

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

  • python类继承(super多类继承)

    1. python2和python3中定义类的形式不同 python3中只有只有新式类 python2中有经典类和...

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

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

  • Python 类

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

  • python2和python3的差别

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

  • 经典类和新式类区别

    在python2中,如果明确写了继承object,那么这个类就是新式类;如果没有写,那么就是旧式类(经典类)。 在...

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

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

  • 新式类和旧式类区别

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

  • Python多继承的执行顺序

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

网友评论

      本文标题:Python2和Python3中新式类、经典类(旧式类)的区别

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