fyhuang <[EMAIL PROTECTED]> wrote: > [ ... ] no such thing as a private variable. Any >part of the code is allowed access to any variable in any class, and >even non-existant variables can be accessed: they are simply created.
You're confusing two issues: encapsulation and dynamic name binding. You might also want to check out the difference between read and write access to non-existant variables. >I'm wondering what the philosophy behind this is, "We are all consenting adults." And probably experience of data encapsulation being more of a hinderence than a benefit. > and if this >behaviour is going to change in any future release of Python. I damn well hope not. And if you want to control those writes, try this for a base class: class restrict_set: def __init__(self, allowed_names): self._allowed_names = set(allowed_names) def __setattr__(self, name, value): if not name.startswith('_') and name not in self._allowed_names: getattr(self, name) self.__dict__[name] = value (Someone else can do the new style class and the metaclass versions.) -- \S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/ ___ | "Frankly I have no feelings towards penguins one way or the other" \X/ | -- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
-- http://mail.python.org/mailman/listinfo/python-list