使用'变量设置属性'名称

时间:2016-03-07 18:30:32

标签: python function attributes

试图找出我如何做到以下几点。假设我有一些具有我想要设置的属性的函数。一般来说,我们称之为func.attrib = ['list']。挑战是'func'可以根据一些查找的结果而变化(例如,基于字典中的键)。

所以,我可能想说:

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

其中funcfunc1func2是在字典中查找的结果。

func视为string并附加".attrib"将无效,因此我猜测需要更具体的格式化方法。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用if语句? 因为,如果查找是" Big Melons"为此你必须使用func1.attrib然后你可以使用if或elif语句。

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

答案 1 :(得分:0)

如果您尝试在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'等等,然后您可以使用globals获取当前模块的全局dict

# key is 'func', 'func1', or 'func2'
globals()[key].attrib = ['list']

如果这些功能在其他模块中,您可以使用getattr

# All the modules are in module spam
import spam

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