Python:需要 functools.partial(function) 的结果被称为其他东西

标签 python 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__( ) 以返回指定给 *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/

相关文章:

python - 内存泄漏 - gunicorn + django + mysqldb

python - 使用Python中指定的程序打开特定文件。

python - 可调整大小的窗口命令 python-maya

c++ - Maya c++ API,移动对象?

python - 使用Python unicode的特殊字符问题

python pandas groupby 关于分类变量

python - 获取http调试信息

python - 如何使用textScrollList选择 Material ?

python - 如何每4帧设置关键帧

python - 使用 scipy 发行版运行 RandomizedSearchCV 时出现 "OverflowError: Python int too large to convert to C long"