In article <[EMAIL PROTECTED]>,
 "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:

> Coming from a C++ / C# background, the lack of emphasis on private data
> seems weird to me. I've often found wrapping private data useful to
> prevent bugs and enforce error checking..
> 
> It appears to me (perhaps wrongly) that Python prefers to leave class
> data public.  What is the logic behind that choice?
> 
> Thanks any insight.

One thing that the other posters didn't mention is that if you access data 
members of a class in C++ you end up with a very tight coupling with that 
class. 
If the class later changes so that the data is no longer part of the public 
interface, then every user of the class has to change the code and recompile.

In Python, on the other hand, if I have a piece of public data that I later 
decide to replace with an accessor method, I can do that without changing any 
of 
the code that uses the class. 

So, insistence on private data in C++ is a good thing because it reduces the 
level of coupling between a class and its clients. In Python, this is not an 
issue, because the same loose coupling can be obtained with data as well as 
accessor methods, and therefore public data is used when possible and private 
data when necessary.

hth

Ben

-- 
If this message helped you, consider buying an item
from my wish list: <http://artins.org/ben/wishlist>

I changed my name: <http://periodic-kingdom.org/People/NameChange.php>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to