两者Exception
和dict
都在C中实现。
我认为您可以按照以下方式进行测试:
>>> class C(object): pass
...
>>> '__module__' in C.__dict__
True
>>> '__module__' in dict.__dict__
False
>>> '__module__' in Exception.__dict__
False
由于Exception
并且dict
对如何在内部存储它们的数据有不同的想法,因此它们不兼容,因此您不能同时从两者继承。
在更高版本的Python中,尝试定义类时应获得Exception:
>>> class foo(dict, Exception):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Error when calling the Metaclass bases
multiple bases have instance lay-out conflict