假设我有一个X类,我如何检查哪个是基类,以及它们的基类等?
我将 Eclipse 与 PyDev 一起使用,对于 Java 例如,您可以在类名称上键入 CTRL + T 并查看层次结构,例如:
java.lang.Object java.lang.Number java.lang.Integer
Python 可以吗?
如果在 Eclipse PyDev 中不可能,我在哪里可以找到此信息?
按 f4 键并突出显示类名以打开层次结构视图。
inspect.getclasstree()
。
将给定的类列表排列成嵌套列表的层次结构。在出现嵌套列表的地方,它包含从其条目紧接在列表之前的类派生的类。每个条目都是一个二元组,包含一个类及其基类的元组。如果 unique 参数为 true,则给定列表中每个类的返回结构中将出现一个条目。否则,使用多重继承的类及其后代将多次出现。
__mro__
的属性,它给出了给定类可以继承方法或属性的所有父类。从左到右阅读它们。例如:
assert bool.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>)
assert True.__class__.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>)
您还可以将类层次结构可视化为图片。
我使用 Graphviz DOT 和 pyreverse 来可视化和探索大量混乱的类(示例)。
假设您想从
tree.py
库中的
parso
中绘制所有类:
# Generate classes_tree_full.png with full UML-style class boxes
$ pyreverse -mn -o png -p tree_full Lib\site-packages\parso\python\tree.py
# Generate classes_tree_short.png with only class names in boxes
$ pyreverse -mn -k -o png -p tree_short Lib\site-packages\parso\python\tree.py
如果您想查看限定的类名称,例如,请将
-mn
更改为 -my
。 parso.python.tree.Literal
而不仅仅是 Literal
。pyreverse
还通过glob
模式支持多个文件。
点击 command+o,然后按 Ctrl+O 显示父层次结构
查看此博客http://pydev.blogspot.jp/2015/03/navigating-through-your-code-when-in.html