小编Pho*_*x87的帖子

什么是实例化类的pythonic方法,调用其中一个方法,并从lambda函数返回它?

我正在处理小部件和信号,我想将信号绑定到某个回调.因为我真的不需要在感兴趣的情况下创建一个命名回调函数,所以我将它定义为lambda函数.但是,它与其他类集成的方式最好用以下最小的工作示例来描述:

class Foo():
    def parse(self, what):
        self.bar = what

foo = lambda x = Foo(): (x.parse("All set"), x)[-1]

print(foo().bar)
'All set'
Run Code Online (Sandbox Code Playgroud)

lambda函数需要实例化一个类,调用其成员之一来解析字符串并更改其内部状态,并返回实例化的类.目前我能想到的唯一方法就是如上例所示:将实例作为默认参数传递,创建一个列表,其中第一个元素是对方法的调用,第二个元素是实例本身,然后选择最后一个元素.

有更多的pythonic和优雅的方式获得相同的结果?

编辑:一些警告:在实际的代码中,类Foo在其他模块中定义,我将lambda作为参数传递给另一个函数,因此我不需要为回调命名.实际上,我实际拥有的东西看起来像

widget.bind( 'some_signal', lambda t, x = Foo(): (x.parse(t), x)[-1] )
Run Code Online (Sandbox Code Playgroud)

python lambda

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

标签 统计

lambda ×1

python ×1