Python:需要functools.partial(函数)的结果才能被称为其他东西
我的软件支持python自动执行任务(Maya)。当我在这个软件中撤销或重做时,它会打印最后一个命令,不幸的是,对于Python来说,这是函数的内存地址,而不是实际有用的东西。因此,用户看到的是输出Python:需要functools.partial(函数)的结果才能被称为其他东西,python,maya,Python,Maya,我的软件支持python自动执行任务(Maya)。当我在这个软件中撤销或重做时,它会打印最后一个命令,不幸的是,对于Python来说,这是函数的内存地址,而不是实际有用的东西。因此,用户看到的是输出Undo:,而不是像Undo:Set Key on frame x这样的实际有用的东西 似乎没有任何选项可以让Maya从其自身的功能中打印出有用的结果,因此现在我想问一下,是否有一些模糊的方法可以让python使用该实例以软件打印的方式调用自己的有用内容,同时希望不会干扰该功能。在这一点上,我什么都可
Undo:
,而不是像Undo:Set Key on frame x这样的实际有用的东西
似乎没有任何选项可以让Maya从其自身的功能中打印出有用的结果,因此现在我想问一下,是否有一些模糊的方法可以让python使用该实例以软件打印的方式调用自己的有用内容,同时希望不会干扰该功能。在这一点上,我什么都可以试试
def testFunc():
pass
test = partial(testFunc)
如果有人能想出一个更准确的标题,请编辑/建议。感谢kindall在评论中给了我线索,我终于找到了答案。将partial
子类化和定义\uuu repr\uuu()
是关键
通过在\uuuu init\uuuuuuu()
上抓取*args
,并将其存储为self.result
,我们可以在\uuuuuu repr\uuuuuu()
上使用它来返回给*args
的最后一个参数,作为Maya在使用Undo/Redo时给出的结果
class rpartial(partial):
def __init__(self, *args):
self.result = args[-1]
def __repr__(self):
return self.result
rpartial(function, arg1, arg2, undoredo)
在undoredo
的最后一行中指定给rpartial的字符串是Maya在使用Undo/Redo时将打印的字符串。它具体打印什么?最后一个表达式的值是多少?一些特定变量?您可以定义一个分部
子类,通过定义\uuu repr\uu()
来打印更好的标识。然而,它将从哪里获得身份证明?@这是正确的答案,或者说是引导我找到它的。如果我将partial子类化,我可以def\uu repr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuoself:返回结果
并回答您的问题,它会从def\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
然后extraarg4就成为了那个标识。@Vii很高兴它成功了!可能会将您的代码作为答案发布,以帮助未来的访问者。:-)
class rpartial(partial):
def __init__(self, *args):
self.result = args[-1]
def __repr__(self):
return self.result
rpartial(function, arg1, arg2, undoredo)