美文网首页
Python的新式类与旧式类

Python的新式类与旧式类

作者: FangHao | 来源:发表于2017-06-06 23:03 被阅读0次

python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧类。为什么要在2.2中引进new style class呢?官方给的解释是:

为了统一类(class)和类型(type)

In [1]: class A():
   ...:     a = 1
   ...:

In [2]: class B(object):
   ...:     b = 2
   ...:

In [3]: a = A()

In [4]: b = B()

In [5]: type(a)
Out[5]: instance

In [6]: type(b)
Out[6]: __main__.B

In [7]: a.__class__
Out[7]: <class __main__.A at 0x10ef22668>

In [8]: b.__class__
Out[8]: __main__.B

继承的搜索顺序

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

slots

新式类新增slots属性,可以限制类的属性和方法

In [1]: class Person(object):
   ...:     __slots__ = ('name','age')
   ...:

In [2]: p = Person()

In [3]: p.name = 'FangHao'

In [4]: p.age = 24

In [5]: p.weigth = 150
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-0b75d36f0341> in <module>()
----> 1 p.weigth = 150

AttributeError: 'Person' object has no attribute 'weigth'

pyhton2.x 默认都是旧式类,除非显示的继承object
python3.x 默认都是新式类,隐式的继承object

相关文章

  • Python 类

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

  • 新式类和旧式类区别

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

  • Python的新式类与旧式类

    python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧类。为什么要在2.2中引进new st...

  • python2和python3的差别

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

  • 新式类与旧式类

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

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

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

  • 经典类和新式类区别

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

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

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

  • python super用法 2018-01-28

    新式类,经典类 python3之后均称为新式类,默认继承object类 Python2.x版本分为:分新式类与经典...

  • Python多继承的执行顺序

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

网友评论

      本文标题:Python的新式类与旧式类

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