mystilleef wrote: [...] > > I don't know it's your code not mine. > > class Robust(object): > > def __init__(self): > # Arbitrarily changing this state to False will crash app or > will > # corrupt the whole event system. > self.__is_active = True > > def get_is_active(self): > return self.__is_active > > buffer_is_active = property(get_is_active, doc="True if buffer is > editable") > Let's ignore changes of state for the moment. The mystical difference that makes read access via
some_robust.buffer_is_active() acceptable and some_robust.__is_active somehow dangerous (ignoring the fact that name_mangling will take place) is what? > def monitor_events(self): > # Only methods of this class can change __is_active. > # Add code to change __is_active here. > return > I'm sure nobody would argue that if close synchronization between multiple attributes is required then write accessors are a bad idea. But using them unnecessarily just makes your code heavier, slower and less easy to maintain. > See! I'm controlling access. Whee! And if one sober morning I want to > change the name __is_active to __buffer_is_active, I won't have to hunt > down 27000 lines of code to do it. Also a naive third party won't crash > my system by changing Robust's state arbitrarily. Because in the real > world when your program is buggy, you get bug reports, nasty emails > among other forms of ridicule. And your supposed solution to my problem > is me saying, "but...but...I told you not change is_active." Ha! And if > you can't figure out why anyone would do this, then I'm not wasting my > time here anymore. Someday you'll learn the hard way. > It's way too late. My comments *are* based on engineering experience. One day you may realise that unnecessary complexity is a far bigger time waster than any imagined problems of direct attribute access. I suspect that if you are getting complaints if the nature you describe it's just because your software isn't that good. > Thanks to the people who exposed me to Python's properties. > > Bye > Really? Promise? I fear we are arguing from different premises. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list