I'm having trouble assigning the assignment operator.
I have successfully overloaded __setattr__. But after the object is initialized, I want __setattr__ to do something else, so I try assigning it to be another function, __setattr2__.
Code:
class C(object):
def __init__(self):
self.x = 0
self.__setattr__ = self.__setattr2__
def __setattr__(self, name, value):
print "first, setting", name
object.__setattr__(self, name, value)
def __setattr2__(self, name, value):
print "second, setting", name
object.__setattr__(self, name, value)
c = C()
c.x = 1
What I get:
first, setting x
first, setting __setattr__
first, setting x
What I want/expect:
first, setting x
first, setting __setattr__
second, setting x