我在stackoverflow上关于如何导入类的建议 从根文件夹之外的路径: How to dynamically load a Python class Does python have an equivalent to Java Class.forName()?
不幸的是,这引发了错误: ValueError:空模块名称
据我所知,import不应该返回一个空模块,比如imp中的load_source方法。所以我不明白这个错误,也不了解如何处理它。
我在这里实施的错误是什么? 你能在这里向我倾斜正确的方向吗?
谢谢!
代码:
klass = __import__('..folder.module.Class_A')
some_object = klass()
class class_B(some_object):
def run(self):
print ('Test OK!')
导入的类(模块的内容):
class Class_A():
def __init__(self, arg1, *args):
def run(self):
pass
答案 0 :(得分:3)
首先,您没有正确使用导入。
选项1 :
根据https://docs.python.org/2/library/functions.html#import,您应该这样做:
klass = __import__('folder.module', globals(), locals(), ['Class_A'], -1)
现在,如果您想要Class_A本身,您应该这样做:
some_object = klass.Class_A
然后你可以使用:
继承它class class_B(some_object):
def run(self):
print ('Test OK!')
选项2 :
from folder.module import Class_A
然后你可以使用:
继承它class class_B(Class_A):
def run(self):
print ('Test OK!')
注意:在folder.module文件夹中应该是python包,模块应该是python模块