最可靠方式是用内置 diagrams 功能:光标停在类名上按 ctrl+alt+u(macos 为 cmd+option+u),若无效需检查光标位置、文件类型及 sdk 配置;右键菜单仅在类定义或类名处稳定显示 diagrams 选项,而 __mro__ 等仅为补充手段。

PyCharm 里直接看类的继承关系图,最可靠的方式是用内置 Diagrams 功能,而不是靠猜 __mro__ 或手动翻源码——尤其当你面对 DRF、Django 或大型三方库时,跳转可能卡在中间层,根本找不到根。
用快捷键 Ctrl + Alt + U(macOS 是 Cmd + Option + U)快速打开继承图
这个操作必须在类名上触发才有效,光标停在类名上(比如 GenericAPIView、APIView 或你自己的 MyView),再按快捷键。如果没反应,常见原因有:
- 光标不在类定义行,而是在方法体或注释里
- 当前文件未被 PyCharm 正确识别为 Python 文件(检查右下角文件类型是否显示
Python) - 项目未正确配置 SDK,导致符号解析失败(
File → Project Structure → Project → Project SDK确认已选)
图打开后默认只显示直接父类和子类,双击节点可展开;右键节点能「Show Parents」或「Show Children」,比反复 Ctrl+Click 更省时间。
右键菜单里的 Show Diagrams 有时不出现?
不是所有上下文都支持右键唤出 Diagrams,它依赖于当前光标所在的“语义位置”。只有以下情况右键菜单才会稳定出现该选项:
- 光标落在类定义的
class关键字上 - 光标落在类名上(如
class MyForm(forms.Form):中的MyForm) - 在项目视图中右键点击 .py 文件 → 选择
Diagrams → Show Diagrams,但此时会展示整个模块内所有类的关系,噪音较大
如果右键没选项,别折腾,直接用快捷键更稳。
PyCharm 2026.2提供 JetBrains 官方 2026.2 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
__mro__ 和 __bases__ 是补充手段,不是替代方案
它们适合调试时快速验证,但不能代替图形化视图:
-
MyClass.__mro__返回的是方法解析顺序元组,含object,但不体现多继承分支结构 -
MyClass.__bases__只列直接父类,对class D(B, C):这种多继承有用,但看不到 B 和 C 各自往上怎么连 - 运行时查
__mro__要求类已加载,而 Diagrams 能在未运行状态下静态分析(比如刚写完类还没 import)
示例:在 Python Console 里输 from rest_framework.views import APIView; APIView.__mro__,你会看到一长串,但没法直观看出 APIView → View → object 和中间混入的 ContextMixin 是怎么插进去的。
复杂继承图里容易忽略的关键点
PyCharm 的 Diagrams 默认不显示抽象基类(ABC)、协议(Protocol)或 typing 类型提示中的父类,只画运行时真实继承链。这意味着:
- 如果你用了
class MyHandler(abc.ABC),abc.ABC不会出现在图中 -
class A: pass; class B(A, typing.Protocol): ...中的typing.Protocol也不会画出来 - DRF 里大量用
GenericAPIView混合Mixin类,但 Mixin 本身往往不显式继承,图里只显示实际class定义的继承线,不会补全 mixin 行为来源
这时候得结合 Ctrl + Click 跳转到具体 Mixin 类,再对它单独做一次 Ctrl + Alt + U —— 图是局部的,不是全局的,别指望一张图包揽所有关联。










