将lambda方法添加到类中

时间:2015-08-29 19:49:21

标签: python class lambda

我有A班:

class A:
    a = 2
    b = 3
    c = 4

我添加了获取每个成员的方法(get_a,get_b,get_c)

for attrib in ('a', 'b', 'c'):
    f = lambda self: getattr(self, attrib)
    setattr(A, 'get_'+attrib, f)

令人惊讶地在创建的实例上调用每个方法:

a = A()
print(a.get_a())
print(a.get_b())
print(a.get_c())

结果

4
4
4

不符合我的预期

2
3
4

我发现将循环扩展为setattr的3次使用可以做到这一点,但为什么呢?为什么汇总setattr的3次使用会改变什么?

0 个答案:

没有答案