Python中继承已有类时额外继承object是否有实际意义?
Python中额外继承object的多重继承是否有实际益处?
我在审阅代码时发现了这样的结构:
class Bar(Foo, object):
看起来可以简化成:
class Bar(Foo):
从方法解析的继承链来看,二者功能似乎一致,两种情况下Foo和Bar都是object的isinstance()实例:
B → F → o B → F ↳ o
想请教这种额外继承object的多重继承是否存在实际益处?
- 在Python 3环境下,完全没有实际益处。Python 3里所有类默认都是新式类,哪怕只写
class Bar(Foo):,只要Foo本身是新式类(不管直接还是间接继承object),Bar都会自动成为object的子类,继承逻辑和显式写object完全一致。 - 要是放到Python 2中,情况会有区别:Python 2区分旧式类和新式类,只有显式继承
object的类才是新式类。但如果Foo已经是新式类(比如定义为class Foo(object):),那Bar(Foo, object)和Bar(Foo)也没有功能上的差异,因为Foo已经把object的继承链包含在内了。 - 硬要找个“作用”的话,这种写法可能只是Python 2过渡到Python 3后的习惯残留——部分开发者保留了显式声明
object的写法,但在Python 3里完全是冗余的,反而会让代码显得啰嗦。
内容的提问来源于stack exchange,提问作者ti7
相关产品推荐
相关产品推荐

