试图找出我如何做到以下几点。假设我有一些具有我想要设置的属性的函数。一般来说,我们称之为func.attrib = ['list']
。挑战是'func'
可以根据一些查找的结果而变化(例如,基于字典中的键)。
所以,我可能想说:
func.attrib = ['list']
OR
func1.attrib = ['list']
OR
func2.attrib = ['list']
等
其中func
,func1
,func2
是在字典中查找的结果。
将func
视为string
并附加".attrib"
将无效,因此我猜测需要更具体的格式化方法。
任何帮助表示赞赏!
答案 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']