__subclasses__不显示任何内容

cap*_*cap 3 python python-import python-2.7

我正在实现一个从适当的子类返回对象的函数。如果我SubClass从迁出base.py,则不会出现的子类__subclasses__。是否要求它们在同一文件中?也许我从未直接导入的事实subclass.py隐藏了python的子类?我能做什么?我什至检查了属性__mro__get_subclass指向正确的类。

# 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
Run Code Online (Sandbox Code Playgroud)

Mis*_*agi 5

Python仅运行导入的模块的代码。如果将代码移至其他模块但从未导入,则Python不会知道其内容。

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

# project/src/__init__.py
import project.src.base      # executes the ``BaseClass`` definition
import project.src.subclass  # executes the ``SubClass`` definition
Run Code Online (Sandbox Code Playgroud)

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