在python中我想導出一個對象方法作爲一個普通函數。該對象將被關閉。 就像下面這個: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預期。但是,如果我用註釋行替換回報 - 拉姆達行會失敗給了以下錯誤:
TypeError: m() got multiple values for keyword argument 'self'
據我所知,使用functools是不是訴諸lambda表達式清潔。所以我想知道如何在functools中使用部分或其他工具來完成此操作。
非常感謝,有效,看起來很乾淨。 – 2012-08-17 10:21:39