因此,我创建了可以通过任何方法访问的全局对象。现在我必须通过这样的方法返回对象。
def get_my_obj (obj_name):
if obj_name == "abc": return abc
elif obj_name == "xyz": return xyz
elif obj_name == "def": return def
有没有更简单的方法来实现这一目标?我有数百个这样的对象。
答案 0 :(得分:3)
通过在适当的档案中使用globals()
,完全有可能实现这样的恶行。
# file1.py
abc = 'foo'
xyz = 'bar'
dfe = 'baz'
def get_my_obj(obj_name):
return globals()[obj_name]
# file2.py
from file1 import get_my_obj
print(get_my_obj('abc')) # 'foo'
globals()
检索当前模块中的变量。在这种情况下,它可能是执行它的文件。