Python 动态导入类
现在我有这样的脚本:Python 动态导入类,python,Python,现在我有这样的脚本: class threadEnum(): pass class first(threadEnum): pass class second(threadEnum): pass class third(threadEnum): pass enums = [enum(domain, [], q=subdomains_queue, silent=silent, verbose=verbose) for enum in chosenEnums]
class threadEnum():
pass
class first(threadEnum):
pass
class second(threadEnum):
pass
class third(threadEnum):
pass
enums = [enum(domain, [], q=subdomains_queue, silent=silent, verbose=verbose) for enum in chosenEnums]
for enum in enums:
enum.start()
for enum in enums:
enum.join()
哪些课程很长,需要很多线。我需要将每个类移动到单独的文件中,然后将所有类导入主脚本。因此,我创建了文件夹引擎,并将三个文件放入其中,分别包含first.py、second.py和third.py类以及file uuu init_uu.py
我想一定是这样的:
import importlib
class threadEnum():
pass
chosenEnums = []
chosenEnums = ['first', 'second', 'third']
# Load classes from engines folder
for enumm in chosenEnums:
module = 'engines'
# create a global object containging our module
mymethod = getattr(importlib.import_module('engines'), enumm)
enums = [enum(domain, [], q=subdomains_queue, silent=silent, verbose=verbose) for enum in chosenEnums]
for enum in enums:
enum.start()
for enum in enums:
enum.join()
但我得到了一个错误:
AttributeError:“module”对象没有“first”属性
怎么了?Python 2.7.6使用简单的if语句,将变量名设置为对象,并使用dir检测命名对象类中的对象。将文件夹作为模块导入时,其中的文件不会立即作为属性加载
>>> import importlib
>>> print(dir(importlib.import_module('engines'))
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
要加载它们,必须使用导入语句。在这种情况下,您可以使用uuu import uuu{0}.{1}.formatmodule,enumm.Try而不是geattr。。。使用just mymethod=importlob.import_module'engines.+enummYou可以尝试uuu导入u{0}.{1}.formatmodule,enummOk。但是现在我得到了错误名称错误:名称“threadEnum”没有定义可能是因为您没有在该文件中定义类threadEnum所以我需要在每个类threadEnum类中重新定义?还是使用相互导入?但是如何从根目录从引擎文件夹导入?你能详细说明你的建议吗?可能提供一个工作代码示例?