lambda表达式如何绑定到类?

时间:2011-06-30 04:59:41

标签: python

如果我在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>

为什么一个人而不是另一个人?

2 个答案:

答案 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 = [_]