如果我在Python中设置如下所示的类,我希望创建的lambda表达式应该绑定到类A.我不明白为什么当我将lambda放在像g
这样的列表中时它没有约束力。
class A(object):
f = lambda x,y: (x + y)
g = [lambda x,y: (x + y)]
a = A()
#a.f bound
print a.f
<bound method A.<lambda> of <__main__.A object at 0xb743350c>>
#a.g[0] not bound
print a.g[0]
<function <lambda> at 0xb742d294>
为什么一个人而不是另一个人?
答案 0 :(得分:15)
f
是绑定的,因为根据定义它是类的一部分。 g
不是一种方法。 g
是一个列表。顺便提一下,这个列表的第一个元素恰好是一个lambda表达式。这与是否在类定义中定义g
无关。
答案 1 :(得分:0)
如果您希望g[0]
成为绑定方法,请执行以下操作:
class A(object):
f = lambda x,y: (x + y)
_ = lambda x,y: (x + y)
g = [_]