我有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次使用会改变什么?