[英]error dynamically importing and calling module in python 2.7
我无法让以下两个示例协同工作, 动态加载模块并按字符串调用函数 。 我正在尝试动态加载和调用python模块。
我的文件结构如下
src/
main.py
__init__.py
modules/
__init__.py
module1.py
module2.py
...
module100.py
在我的main.py函数中,我有以下内容来加载模块,
mod = imp.load_source('module', '/path/to/module.py')
这似乎工作正常, print module
产量
<module 'module' from '/path/to/module.py'>
在module.py
我有
class module:
def __init__(self):
print ("HELLO WORLD")
def calc(self):
print ("calc called")
if __name__ == "__main__":
import sys
sys.exit(not main(sys.argv))
问题是当我尝试在模块中调用calc函数时,
result = getattr(module, 'calc')()
产生以下结果
HELLO WORLD
Traceback (most recent call last):
File "main.py", line 39, in main
result = getattr(module, 'calc')()
AttributeError: 'module' object has no attribute 'calc
我不确定我错过了什么或做错了什么
出于某种原因,你也将你的类module
命名为,这让你感到困惑。
你的module
是一个模块:
>>> mod = imp.load_source('module', 'module.py')
>>> mod
<module 'module' from 'module.pyc'>
>>> dir(mod)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'module']
你的类是mod.module
:
>>> x = mod.module()
HELLO WORLD
>>> x
<module.module instance at 0xa1cb18c>
>>> type(x)
<type 'instance'>
旁白:线
self
什么都不做,你的calc
方法需要接受一个参数,否则你会得到TypeError: calc() takes no arguments (1 given)
在你调用它时TypeError: calc() takes no arguments (1 given)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.