Python では、オブジェクト メソッドを通常の関数としてエクスポートしたいと考えています。オブジェクトは閉じられます。次のように:
from functools import partial
class A(object):
def __init__(self,a):
self.a = a
def m(self,b):
return self.a+b
def exportm(self):
return lambda b,self=self: self.m(b)
#return partial(self.m,self=self)
f = A(10).exportm()
print f(5)
これはうまく機能し、期待どおりに 15 を出力します。しかし、return-lambda-line をコメント行に置き換えると、次のエラーが発生して失敗します。
TypeError: m() got multiple values for keyword argument 'self'
ラムダ式に頼るよりも functools を使用する方がクリーンであることを理解しています。したがって、functools の部分ツールまたはその他のツールを使用してこれを行う方法を知りたいと思います。