我正在实现一个从适当的子类返回对象的函数。如果我搬家SubClass
from base.py
,没有出现子类__subclasses__
。它们必须在同一个文件中吗?
也许我从来没有直接导入subclass.py
对Python隐藏子类?我能做些什么?我什至检查了属性__mro__
and 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
Python 仅运行导入的模块的代码。如果您将代码移动到不同的模块但从未导入它,Python 将不知道其内容。
您必须导入包含您想要访问的子类的文件。
# project/src/__init__.py
import project.src.base # executes the ``BaseClass`` definition
import project.src.subclass # executes the ``SubClass`` definition
请注意,在哪里导入这些并不重要 - 它们必须在您需要之前导入SubClass
出现在__subclasses__
, 尽管。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)