我正在使用具有此外观的代码:
module.py:
def attribute3():
return "something3"
def attribute2():
return "something2"
def attribute1():
return "something1"
主要的.py:
from module import attribute1, attribute2, attribute3
def main():
return {
"attribute1": attribute1(),
"attribute2": attribute2(),
"attribute3": attribute3()
}
print main()
我想知道是否有更好的方法在main
函数中创建字典,而无需执行"attribute: function()"
。我觉得我在重复自我。
我无权访问module.py代码,因此无法更改为Class。
我使用的是Python 2.5,因为这是一款传统软件。
感谢。
答案 0 :(得分:1)
您可以使用getattr
并调用返回的任意函数。
import some_module
def create_dict(module, names):
resp = {}
for name in names: # Iterate over an arbitrary number of arguments
# Get the function with the name provided and call it,
# setting the response as the value for the name
resp[name] = getattr(module, name)()
return resp
print create_dict(some_module, ['attribute1', 'attribute2', 'attribute3'])
我没有在Python 2.5上对此进行测试,但我没有看到任何原因导致它无法正常工作。