我希望能够使用字典键作为函数名,但我不确定是否可行。作为一个简单的例子,我想要一个class().dictkey(otherstuff)
的选项,而不是class().dothis(dictkey, otherstuff)
。下面是一个不工作的代码示例,它可以让您了解我的想法。在
class testclass:
def __init__(self):
self.dict = {'stuff':'value', 'stuff2':'value2'}
#I know this part won't work, but it gives the general idea of what I'd like to do
for key, value in self.dict.iteritems():
def key():
#do stuff
return value
>>> testclass().stuff()
'value'
显然,每个键都需要检查它是否覆盖了任何重要的内容,但除此之外,如果可以工作的话,我将非常感谢您的帮助。在
基本上,我的脚本是将其他脚本存储在Maya场景文件的头中,因此您可以调用一个命令,它将执行匹配的脚本。它将脚本以文本格式存储在字典中,我在字典中做了一个类似于包装器的事情,这样你就可以输入arg和kwargs,而且因为你只能亲自输入和执行脚本,所以实际上没有任何恶意的危险,除非你自己这么做。在
列表是pickle和base64编码的,因为它的头都需要字符串格式,所以每次调用函数时,它都会解码字典以便您可以编辑或读取它,所以理想情况下,每次调用函数时我都需要构建函数。在
run函数中的几个示例:
^{pr2}$因此,正如这个问题所问的,就上面的代码而言,我希望有类似SceneScript().MyScript( "test(10)" )
的东西,只是为了让它更易于使用。在
我将研究使用^{} ,与
__getattribute__
结合使用的部分函数:输出:
^{pr2}$我能想到的唯一正确的方法是:
这将允许您:
^{pr2}$当然,你为什么想做这样的事,这个问题至今还没有答案:)
编辑每个更新的问题:
问题在于无法安全地将方法分配给函数签名。我不确定
SceneScript().add
目前是如何工作的,但这基本上必须与此相关。在您是否正在寻找一种方法,通过一个带有名称的字符串来调用驻留在当前模块中的函数?如果是的话
将打印5。在
相关问题 更多 >
编程相关推荐