Python 使用';变量';名称

Python 使用';变量';名称,python,function,attributes,Python,Function,Attributes,试着找出我可以做以下事情的方法。假设我有一个函数,它有一个我想要设置的属性。我们一般称之为:func.attrib=['list']。挑战在于'func'可以根据某些查找的结果(例如,基于字典中的键)而变化 所以,我想说: func.attrib = ['list'] OR func1.attrib = ['list'] OR func2.attrib = ['list'] 等 其中func,func1,func2是在字典中查找的结果 将func视为string并附加“.attrib”将不起

试着找出我可以做以下事情的方法。假设我有一个函数,它有一个我想要设置的属性。我们一般称之为:
func.attrib=['list']
。挑战在于
'func'
可以根据某些查找的结果(例如,基于字典中的键)而变化

所以,我想说:

func.attrib = ['list']
OR
func1.attrib = ['list']
OR 
func2.attrib = ['list']

其中
func
func1
func2
是在字典中查找的结果

func
视为
string
并附加
“.attrib”
将不起作用,因此我猜需要一种更具体的格式化方法


感谢您的帮助

您是否考虑过使用if语句? 例如,如果查找是“大西瓜”,那么必须使用func1.attrib,然后可以使用if或elif语句

if look_up = "Big Melons":
    func1.attrib = ["Lists"]
elif look_up = "Small Melons":
    func2.attrib = ["list"]

如果您试图为存储为
dict
中的值的函数设置属性,只需执行查找并设置属性,例如

mydict = {'foo': func, 'bar': func1, 'baz': func2}

key = ... get a key that is either 'foo', 'bar' or 'baz' ...

mydict[key].attrib = ['list']
如果不存在这样的
dict
,但是所有相关函数都是在模块的全局命名空间中定义的,并且您希望基于函数名本身分配属性(
'func'
'func1'
,等等),那么您可以使用获取当前模块的全局
dict

# key is 'func', 'func1', or 'func2'
globals()[key].attrib = ['list']
如果这些函数位于其他模块中,则应使用:


如何知道是否应该使用func1、func2、func3等?这是基于字典中的查找,基于键。我没有费心把它包括在原始问题中,我的意思是,查找结果存储在哪里?结果是函数吗?还是一个表示函数的字符串?结果是一个表示函数的字符串。i、 e.字典中的条目将是“func”、“func1”或“func2”。如果没有太多函数,可以构建一个字典,其中键是该字符串,值是函数。否则,您可以使用
globals
变量(我想,不确定),您可以搜索有关该变量的文档。这是次优的,因为可能有许多函数,并且这种类型的变量在未来的一些方面是需要的。问题是是否有一种方法可以将字符串附加到属性调用中。
# All the modules are in module spam
import spam

getattr(spam, key).attrib = ['list']