小编lif*_* pi的帖子

python:export方法作为函数关闭对象

在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)
Run Code Online (Sandbox Code Playgroud)

这很好用并按预期打印15.但是如果我用注释行替换return-lambda-line,它将失败,从而产生以下错误:

TypeError: m() got multiple values for keyword argument 'self'
Run Code Online (Sandbox Code Playgroud)

我知道使用functools比使用lambda表达式更干净.所以我想知道如何使用functools中的部分或其他工具来完成此操作.

python lambda closures partial functools

2
推荐指数
1
解决办法
437
查看次数

标签 统计

closures ×1

functools ×1

lambda ×1

partial ×1

python ×1