This is my code:
class myclass:
def __init__(self):
self.value = 5
def __getattr__(self, attrname):
if attrname == 'value':
return 10
X = myclass()
print X.value
I suppose the output value should be 10
(__getattr__
modifies returned value). However output is 5
.
If I remove initialization of value:
class myclass:
def __getattr__(self, attrname):
if attrname == 'value':
return 10
X = myclass()
print X.value
It works as expected (returns 10
).
Why?