__subclasses__ 没有显示任何内容

__subclasses__ not showing anything

我正在实现一个函数,该函数 returns 来自适当子 class 的对象。如果我从 base.py 移动 SubClass__subclasses__ 不会出现子 class。他们需要在同一个文件中吗? 也许我从不直接导入 subclass.py 的事实隐藏了 python 的子 class?我能做什么?我什至检查了属性 __mro__get_subclass 指向右边 class.

# project/main.py
from project.src.base import get_subclass

obj = get_subclass(cls,name) # Returns an object of a subclass of cls

# project/src/subclass.py
from project.src.base import BaseClass

class SubClass(BaseClass):
    pass

# project/src/base.py
def get_subclass(cls,name):
    subclss = cls.__subclasses__ # This is returning an empty list
    pass

class BaseClass(object):
    pass

Python 只运行导入模块的代码。如果您将代码移动到不同的模块但从未导入它,Python 不知道它的内容。

您必须导入包含您希望访问的子类的文件。

# project/src/__init__.py
import project.src.base      # executes the ``BaseClass`` definition
import project.src.subclass  # executes the ``SubClass`` definition

请注意,将这些导入到哪里并不重要 - 但必须先导入它们,然后才能 SubClass 出现在 __subclasses__ 中。