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

Reply via email to