Wow! That was an instant classic! I just have a couple of points to add. The suggestion was made (not by you) that data hiding is worthless because it can be defeated anyway. According to that kind of reasoning, locks are worthless because they can be picked, cut, or just blown off. I know that the lock on my front door cannot stop someone who is determined to get into my house, but I think I'll keep it anyway. I'm just irrational that way, I guess.
As I said before, I don't know if enforced data hiding can be added to Python without ruining the language (or if it can be added at all, for that matter). But if it can, I think the cleanest and most elegant syntax would be to add the keyword "private" or "priv" and use it essentially the same way it is used in Java, C++, and now Scala. That would eliminate the need for leading underscores, which I personally find tacky. Since new attributes can be added outside of the constructor, the private declaration would also have to be allowed outside the constructor and for existing attributes. One more thing. If an airplane is going to flip upside down and fly straight into the ground, the passengers may as well be nuns. They are better prepared for the result. -- http://mail.python.org/mailman/listinfo/python-list