bruno modulix wrote:
>>but technically
>>speaking, there are no public, protected, or private things.
> 
> Yes there are:
> object.name is public
> object._name is protected
> object.__name is private

The double-underscore name-mangling is almost never worth it.  It's 
supposed to stop name collisions, but, while it does in some cases, it 
doesn't in all cases, so you shouldn't rely on this.  For example:

---------- mod1.py ----------
class C(object):
     __x = 'mod1.C'
     @classmethod
     def getx(cls):
         return cls.__x
-----------------------------

---------- mod2.py ----------
import mod1
class C(mod1.C):
     __x = 'mod2.C'
-----------------------------

py> import mod1, mod2
py> mod1.C.getx()
'mod1.C'
py> mod2.C.getx()
'mod2.C'

If double-underscore name-mangling worked like private variables, 
setting C.__x in mod2.C should not affect the value of C.__x in mod1.C.

STeVe
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to