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

时间:2016-01-29 23:17:33

标签: python maya

我的软件支持python自动执行任务(Maya)。当我在这个软件中撤消或重做它打印最后一个命令时,不幸的是,这是函数的内存地址,而不是实际有用的东西。因此,用户会看到输出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>

中测试结果

如果有人能想到更准确的标题,请编辑/建议。

1 个答案:

答案 0 :(得分:2)

感谢所有人在评论中给我带头,我能够找到答案。子类化partial和定义__repr__()是关键。

抓住*args上的__init__()并将其存储为self.result,我们可以在__repr__()上使用它来返回给*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时打印的字符串。