Python:需要 functools.partial(function) 的结果被称为其他东西
Python: Need the result of functools.partial(function) to be known as something else
我的软件支持 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__()
到 return 上使用它 return 给 *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 的字符串是使用 Undo/Redo.
时 Maya 将打印的字符串
我的软件支持 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__()
到 return 上使用它 return 给 *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 的字符串是使用 Undo/Redo.