Python:如何枚举类的虚拟父类(super class)?

标签 python

对于任何类,您都可以通过属性 __mro__ 告诉(非虚拟)父类(super class),并通过调用 __subclasses__ 告诉(非虚拟)子类。

对于任何 ABC,您可以通过属性 _abc_registry 告诉所有虚拟子类。

有没有办法告诉一个类的所有虚拟父类(super class),即它注册为虚拟子类的所有类?

最佳答案

For any ABC you can tell all virtual subclasses via the attribute '_abc_registry'.

不,你不能。您只能通过这种方式找到显式注册的虚拟子类。由 __subclasshook__ 处理的任何内容都不会显示在您的支票中。

要完成您想要做的事情,您必须遍历 Python session 中定义的每个 ABC 并调用 isinstance。虽然这在 CPython 中通过使用 __subclasses__ 方法遍历类型层次结构在技术上是可行的,但这可能是一个坏主意。

关于Python:如何枚举类的虚拟父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37665304/

相关文章:

python - 使用 PyCLIPS 加载事实非常慢,而使用 CLIPS 加载速度很快

python - Google App Engine 边缘缓存不工作

python - Microsoft MSAL React SPA 和 RESTful Django API

python - python中的延迟函数

python - 打印乐谱 - Pygame

python - 火力地堡 "message": "PASSWORD_LOGIN_DISABLED" response when trying to authenticate

python - 带有 filter_horizo​​ntal 的 Django 管理面板

python - 抓取 MTA 地铁数据?

python - 根据另一列 pandas 设置列等于值

python - 翻转图像 Python