如何检查 Python 的类层次结构?

问题描述 投票:0回答:5

假设我有一个X类,我如何检查哪个是基类,以及它们的基类等?

我将 Eclipse 与 PyDev 一起使用,对于 Java 例如,您可以在类名称上键入 CTRL + T 并查看层次结构,例如:

java.lang.Object
   java.lang.Number
       java.lang.Integer

Python 可以吗?

如果在 Eclipse PyDev 中不可能,我在哪里可以找到此信息?

python class inheritance pydev hierarchy
5个回答
8
投票

按 f4 键并突出显示类名以打开层次结构视图。


8
投票

尝试

inspect.getclasstree()

将给定的类列表排列成嵌套列表的层次结构。在出现嵌套列表的地方,它包含从其条目紧接在列表之前的类派生的类。每个条目都是一个二元组,包含一个类及其基类的元组。如果 unique 参数为 true,则给定列表中每个类的返回结构中将出现一个条目。否则,使用多重继承的类及其后代将多次出现。


7
投票

此外,每个类都带有一个名为

__mro__
的属性,它给出了给定类可以继承方法或属性的所有父类。从左到右阅读它们。例如:

assert bool.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>)
assert True.__class__.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>)

2
投票

您还可以将类层次结构可视化为图片。
我使用 Graphviz DOTpyreverse 来可视化和探索大量混乱的类(示例)。

假设您想从

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
模式支持多个文件。


0
投票

点击 command+o,然后按 Ctrl+O 显示父层次结构

查看此博客http://pydev.blogspot.jp/2015/03/navigating-through-your-code-when-in.html

© www.soinside.com 2019 - 2024. All rights reserved.