我的软件支持 python 来自动执行任务 (Maya)。当我在这个软件中撤消或重做时,它会打印最后一个命令,不幸的是,对于 Python 来说,这是函数的内存地址,而不是实际有用的东西。因此用户看到输出 Undo: <functools.partial object at 0x000002235DEDDF48>
而不是像Undo: Set Key on something at frame x
这样实际有用的东西
似乎没有选项可以让 Maya 从它自己的功能中打印出有用的结果,所以现在我想问是否有一些晦涩的方法用 python 来让该实例以软件的方式调用自己一些有用的东西将打印,同时希望不会干扰功能。此时我会尝试一切!
def testFunc():
pass
test = partial(testFunc)
测试结果<functools.partial object at 0x000002235DEA95E8>
如果有人能想到更准确的标题,请编辑/建议。
最佳答案
感谢kindall在评论中给我的引导,我才能找到答案。子类化 partial
并定义 __repr__()
是关键。
通过获取 __init__()
上的 *args
并将其存储为 self.result
,我们可以在 __repr__( )
以返回指定给 *args
的最后一个参数,作为使用撤消/重做时 Maya 给出的结果。
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 将打印的内容。
关于Python:需要 functools.partial(function) 的结果被称为其他东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095845/