为什么旧样式类的实例是`object`的实例?

时间:2017-06-15 11:36:15

标签: python class python-2.x python-internals isinstance

在Python 2中,为什么旧​​样式类的实例仍然是object的实例,即使它们没有明确地继承自object

class OldClass:
    pass

>>> isinstance(OldClass(), object)
True

在测试之前,我会得出结论isinstance(x, object) == True意味着xobject的子类的实例,因此是新样式类的实例,但它出现了Python 2中的所有对象都是object的实例(是的,我知道听起来有多明显)。

进一步挖掘,我发现了其他一些看似奇怪的行为:

>>> issubclass(OldClass, object)
False

我的印象是isinstance(x, SomeClass)几乎等同于issubclass(x.__class__, SomeClass),但显然我错过了一些东西。

0 个答案:

没有答案