Python-浅谈Python2与Python3中的object继承

Python2中默认不加载object,继承object可以获得高级特性并改变多继承调用顺序。新式类遵循广度优先调用,经典类按深度优先。Python3默认为新式类,建议明确继承object以保持规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Python2版本中编写类时,默认不加载object。那加载object和不加载object的区别在哪里呢?

 

一是拥有的高级特性不同。

继承object可以拥有许多高级特性,这些高级特性是编写框架和大型项目时需要使用的,十分有用。

链接https://blog.youkuaiyun.com/DeepOscar/article/details/80947155中有继承object与不继承object两者特性的详细的表格

 

二是调用顺序不同。

继承了object的是新式类,不继承 object 的是经典类,在 Python 2 里面新式类和经典类在多继承调用顺序方面会有差异。具体而言就是经典类按照深度优先进行调用,而新式类遵循广度优先进行调用。

比如下面的代码,深度优先调用就是先从D->B->A->C,而广度优先则是D->B->C->A。

具体的调用顺序按照mro列表顺序,可以使用mro()函数来查看mro列表。

class A(object):
    pass

class B(A):
    pass

class C(A):
    pass

class D(B,C):
    pass

d=D()
print(D.mro())

>>>[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值