用'变量'名称设置属性
试图弄清楚我可以如何执行以下操作。假设我有一些具有我想要设置的属性的函数。一般我们称之为:func.attrib = ['list']
。挑战是'func'
可能会根据某些查找的结果(例如,基于字典中的密钥)而有所不同。用'变量'名称设置属性
所以,我可能想说:
func.attrib = ['list']
OR
func1.attrib = ['list']
OR
func2.attrib = ['list']
等
其中func
,func1
,func2
是一个查找词典的结果。
处理func
作为string
和追加".attrib"
将无法正常工作,所以我猜一个更具体的格式化方法是必需的。
任何帮助赞赏!
您是否考虑过使用if语句? 因为如果查找是“Big Melons”,并且您必须使用func1.attrib,那么您可以使用if或elif语句。
if look_up = "Big Melons":
func1.attrib = ["Lists"]
elif look_up = "Small Melons":
func2.attrib = ["list"]
这是次优的,因为可能有很多功能,这种类型的变量用法在一些方面需要。真正的问题是有没有一种方法可以将字符串追加到属性调用中。 – laszlopanaflex
http://*.com/q/3253966/5504999 试试看。我希望它能帮助你。 –
如果你想设置存储为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']
你怎么知道你是否应该使用func1,func2,func3等? –
,它基于字典中的查找,基于密钥。我并不打算将它包含在原始问题 – laszlopanaflex
我的意思是,查找结果存储在哪里?结果是函数吗?或者它是一个指示函数的字符串? –