我最近遇到了一个Python 类工厂实现,它非常适合我正在解决的问题。唯一的区别是我希望在不同的包中拥有基类和子类。
但是,当我尝试这样做时,每当我尝试加载基类时都会遇到问题。
结构:
基类.py
from subclasses import *
def NewClass():
"""Map Factory"""
for cls in BaseClass.__subclasses__():
print "checking class..."
class BaseClass(object):
def __init__(self):
print("Building an abstract BaseMap class..")
子类/__init__.py
__all__=['SubClass']
子类/SubClass.py
from BaseClass import BaseClass
class SubClassA(BaseClass):
def __init__(self):
print('Instantiating SubClassA')
当我尝试导入 BaseClass 时,出现以下错误:
1 #导入基类 ----> 2 从 BaseClass 导入 BaseClass 3类SubClassA(BaseClass): 4 def __init__(self): 5 print('实例化子类A') ImportError:无法导入名称BaseClass
我还尝试使用“import BaseClass”,然后将“BaseClass.BaseClass”子类化,但这导致了不同的错误:
1 导入基类 ----> 2类SubClassA(BaseClass.BaseClass): 3 def __init__(self): 4 print('实例化子类A') AttributeError:“模块”对象没有属性“BaseClass”
最后,如果我只是尝试创建子类目录没有问题。只有当我尝试导入 BaseClass 模块时才会出现问题。
有任何想法吗?