首页 > 解决方案 > isinstance(list, object) 和 issubclass(list, object) 都返回 True

问题描述

我正在尝试了解类的特殊属性。通常,我使用dir()方法来获取一个类的属性和方法。但是,该属性__mro__似乎没有出现在dir()任何类的结果中。

根据定义,dir()递归地获取从传入类到基类的所有属性和方法,一直到继承链的上游object。基于这个定义,我假设属性__mro__实际上不是上述继承链中任何类的属性。

后来,我偶然发现了这个类type,发现它的mro方法描述中包含了该方法help(type)。我想,一个类必须继承自type才能使用这个方法。所以我用一个名为的新样式类进行了测试Apple

奇怪的是,Apple不继承自type; 相反,它是它的一个实例。这让我很困惑:我不知道__mro__现在从哪里来。

标签: pythonpython-3.x

解决方案


推荐阅读