0

Im trying to override a setattr in python but get recursion error..How do I fix this problem?

class Human(object):
    def __setattr__(self, name, value):     
        if name == 'gender':
            print 'name == ', name
            print 'value == ', value
            if value in ('male','female'):
                # pass
                self.gender = value
            else:
                raise AttributeError("Gender can only by male or female")

h = Human()
# h.name = 'Mary'
h.gender = 'female'
print h.gender              
user1050619
  • 19,822
  • 85
  • 237
  • 413
  • `self.gender = value` invokes your own `__setattr__`. – user2357112 May 05 '17 at 19:33
  • This is really when you want to use "properties". It's like setters and getters in other languages, but transparent to the user. https://docs.python.org/3/howto/descriptor.html#properties – Arya McCarthy May 05 '17 at 19:33
  • @user2357112 : Thanks it worked after setting the parent setattr, but wondering what happens when you do that? – user1050619 May 05 '17 at 19:41

0 Answers0