1

我想创建一个方法(set),将参数注入另一个(set_result)。我已经尝试过如下使用partial

from functools import partial

class MyClass(MyClassParent):
    set = partial(MyClassParent.set_result, None)

但这不起作用。调用set实例时出现MyClass此错误:

TypeError: set_result() takes exactly 2 arguments (1 given)

我认为这意味着隐式self未通过。如果我set这样写,它会起作用:

def __init__(self, *args, **kwds):
    super().__init__(*args, **kwds)
    self.set = partial(self.set_result, None)

如何set_result使用前一种方法进行包装?

4

3 回答 3

0
set = staticmethod(partial(MyClassParent.set_result, None))
于 2012-03-24T12:51:44.630 回答
0
class MyClass(MyClassParent):
    set = partial(MyClassParent.set_result, MyClassParent, None)
于 2012-03-24T20:06:42.853 回答
0

这不起作用的原因是它functools.partial不是描述符。在实例上访问它不会返回绑定方法。

跟踪器上有一个 Python错误,我为此提交了一个补丁

于 2012-03-26T16:31:04.920 回答