我来自一个坚实的Java(和Matlab)背景,并且最近一直试图自学Python(3.4)。在Java API文档(http://docs.oracle.com/javase/7/docs/api/)中,特定类的文档始终显示该类祖先的完整概述(请参阅,例如this screenshot)。如何获得类型/类的Python层次结构的概述?
现在我想知道是否有任何方法查看Python类的类似祖先层次结构。我的工作假设是,由于Python是一种面向对象的语言,所有非原始类型都将是对象(请纠正我,如果我错了)。了解不同类型的祖先应该可以大大帮助我理解可迭代,序列,视图和列表。
我已经尝试了几件事情,正如对类似问题的回答(如here)中的建议;但inspect.mro(cls)
似乎并不总是工作;例如,下面给出了一个错误:
inspect.getmro(dict_keys)
即使dict_keys是一种类型:
In[30]: type({}.keys()) Out[30]: dict_keys
我也非常惊讶地得知,列表不会从迭代继承:
In[34]: inspect.getmro(list) Out[34]: (list, object)
所以,虽然我的问题主要是如何查看(并且理想地浏览)标准Python库的层次结构,关于如何理解默认类型层次结构的任何其他评论,主要是列表/序列/视图/ iterables如何正式关联,也是非常受欢迎的。看起来,(另外优秀的)Python教程并没有真正涵盖这个东西。
* Python中的所有内容都是一个对象。 – Ffisegydd 2014-11-05 16:26:55
是的,@Ffisegydd,这正是我工作的假设:)然而,为什么'type({}。keys())'产生'dict_keys',但做'dict_keys'产生'name dict_keys没有被定义'... – EelkeSpaak 2014-11-05 16:31:56
概述在https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy – 2014-11-05 21:08:16