1

set別のメソッド ( ) に引数を注入するメソッド ( ) を作成したいと考えていますset_resultpartial以下のように使ってみました。

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
class MyClass(MyClassParent):
    set = partial(MyClassParent.set_result, MyClassParent, None)
于 2012-03-24T20:06:42.853 に答える
0
set = staticmethod(partial(MyClassParent.set_result, None))
于 2012-03-24T12:51:44.630 に答える
0

これが機能しない理由はfunctools.partial、記述子ではないためです。インスタンスでアクセスしても、バインドされたメソッドは返されません。

このトラッカーにはPython のバグがあり、これにパッチを送信しました。

于 2012-03-26T16:31:04.920 に答える