I have class A:
class A:
a = 2
b = 3
c = 4
And I added to it methods for getting each member (get_a, get_b, get_c) by
for attrib in ('a', 'b', 'c'):
f = lambda self: getattr(self, attrib)
setattr(A, 'get_'+attrib, f)
Surprisingly calling each method on created instance:
a = A()
print(a.get_a())
print(a.get_b())
print(a.get_c())
Results in
4
4
4
Not in as I expected
2
3
4
I figured out that expanding the loop to 3 uses of setattr
do the thing, but why? Why rolling up 3 uses of setattr
changes anything?