isinstance(list,object)和issubclass(list,object)都返回True

时间:2019-03-24 14:42:51

标签: python python-3.x

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

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

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

  • isinstance(Apple, type)返回True
  • issubclass(Apple, type)返回False
  • 即使isinstance(object, type)也会返回True

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

0 个答案:

没有答案