获取当前上下文中不存在的子类

时间:2017-12-03 19:31:57

标签: python inheritance

我试图解决的主要问题是如何检测特定类的所有子类。我无法使用__subclasses__的原因是,在我尝试访问子类的环境中,子类无法访问。

我正在使用的文件夹结构如下所示:

    main.py
    projects/
        __init__.py
        project.py
        some_project_child.py

我想要做的是从Project获取project.py(在main.py中定义)的所有子类的列表。

我能够通过以下方式做到这一点:

from projects.project import Project

from projects.some_project_child import SomeProjectChild

Project.__subclasses__

我想避免的这种方法的方面是每次添加新项目文件/类时都必须添加导入行。我意识到我可以通过迭代目录中的文件并导入每个内容来实现这一点,但是有更清晰,更灵巧的处理方式吗?

1 个答案:

答案 0 :(得分:1)

像Python这样的非编译语言的本质是没有导入就不可能做这样的事情。如果没有执行定义的文件,Python根本无法知道任何类的子类。