Luke Paireepinart wrote: >>> I know I could use a __setattr__ but then I'd have to access the leds >>> using a dictionary with an 'LED' key mapped to the status array. >>> It's not necessarily a bad thing for my own use, but it seems like >>> it'd be off-putting to other people using my library. >> >> I don't understand this part. It seems to me this would work: >> def __setattr__(self, name, value): >> object.__setattr__(self, name, value) >> if name == 'leds': >> self._updateLEDs() > What I meant was that it'd require people to access the variable via > classinstance['leds'] > instead of > classinstance.leds > which is what I was aiming for. > I apologize, I should've waited till the morning to e-mail so I could be > more coherent.
No, the above code should work with classinstance.leds. Maybe you are confusing __setattr__ - which affects attributes like .leds - with __setitem__ which is used for classinstance['leds'] > > Is this properties method acceptable Python form or is it more proper to > have modifying member functions like Alan said? Alan and I don't always agree on questions like this. I don't take such a hard position about direct attribute access. IMO using a property is more Pythonic than making an explicit method. But I think one of the nice things about Python is you don't have to write explicit getters and setters; you can use plain attribute access to get at plain data, then if you need to add some behaviour just change the attribute to a property. > Or is it really up to me on how I want to implement it? Of course, it's your code, right? Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor