Confusion About Classes
steve at holdenweb.com
Thu Dec 30 14:27:10 CET 2004
Steven Bethard wrote:
> M.E.Farmer wrote:
>> there are no variables in python
> As M.E.Farmer mentioned, you can't remove underscores on special method
> names like __init__. However, when you're declaring an instance
> variable, e.g.:
> self.__xyz = True
> then you're choosing the name here, so you can name it whatever you
> want. The only reason to use leading double-underscores is if you want
> Python to name-mangle the variable so it's not (easily) accessible from
> subclasses. In most cases, this is unnecessary.
While it's unnecessary in most cases, I'd like to point out that the
mechanism is mostly to avoid inadvertent clashes in the object namespace.
So, if you are designing a class explicitly to be subclassed, that's
when the use of mangled names can pay off.
Of course, if the subclass implementor actually *does* need access to
your instance variables they will curse you if you've mangled them.
unwrapping-that-mangling-isn't-pretti-ly y'rs - steve
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/
Holden Web LLC +1 703 861 4237 +1 800 494 3119
More information about the Python-list