我正在尝试学习类的特殊属性。通常,我使用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__
从何而来。