Hello all, I've been wondering a lot about why Python handles classes and OOP the way it does. From what I understand, there is no concept of class encapsulation in Python, i.e. 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. I'm wondering what the philosophy behind this is, and if this behaviour is going to change in any future release of Python.
It seems to me that it is difficult to use OOP to a wide extent in Python code because these features of the language introduce many inadvertant bugs. For example, if the programmer typos a variable name in an assignment, the assignment will probably not do what the programmer intended. Ruby does something with this that I think would be excellent as an inclusion in Python (with some syntax changes, of course). If private variables require a setter/getter pair, we can shortcut that in some way, i.e. (pseudocode): class PythonClass: private foo = "bar" private var = 42 allow_readwrite( [ foo, var ] ) Or allow_read to only allow read-only access. Also there might be a way to implement custom getters and setters for those times you want to modify input or something: class PythonClass: def get foo(): return "bar" def set var( value ): var = value Anyways, these are just some speculatory suggestions. My main question is that of why Python chooses to use this type of OOP model and if it is planned to change. Thanks! -- http://mail.python.org/mailman/listinfo/python-list