__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__
中。
我正在实现一个函数,该函数 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__
中。