在python中使用其名称返回一个对象

时间:2016-07-25 20:05:51

标签: python object

因此,我创建了可以通过任何方法访问的全局对象。现在我必须通过这样的方法返回对象。

def get_my_obj  (obj_name):  
    if   obj_name == "abc":  return  abc
    elif obj_name == "xyz":  return  xyz
    elif obj_name == "def":  return  def

有没有更简单的方法来实现这一目标?我有数百个这样的对象。

1 个答案:

答案 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()检索当前模块中的变量。在这种情况下,它可能是执行它的文件。

你能做到吗?是。我会这样做吗?不,我是否应该决定你是否应该这样做?否。