继承Python 2.7中的对象以避免使Pyhton3兼容?

时间:2016-03-30 08:51:38

标签: python python-2.7 inheritance

Python 3 中,我们不必继承对象,因为它是隐式继承的。

class A() #python 3 inherits from object

但是在 Python 2 中,我们必须显式地继承自object:

class A(object) #python 2 

所以一方面,我们最终想要转向Python 3,这将是不从对象继承的一点。阅读这个帖子:Python class inherits object。给我的感觉,它最终可能有害,但不是真的。另一方面,我们不想过多地讨论hacky东西。

那么,如果您计划很快切换到Python 3并希望拥有一个干净的继承链,那么该怎么做呢?

1 个答案:

答案 0 :(得分:2)

不确定为什么你认为它会有害。在继承自对象的Python3上没有任何改变,所以你可以保留它。

如果你不相信我,这是一个例子:

class A:
    pass
class B(object):
    pass
a = A()
print(A.mro())
print(B.mro())

[<class '__main__.A'>, <class 'object'>]
[<class '__main__.B'>, <class 'object'>]

(mro代表“方法解析顺序”)