On Fri, 29 Dec 2006 08:20:22 -0600, Larry Bates wrote: > johnf wrote: >> Hi, >> When I use dir() I don't see the __ underscore items. Is there anything >> that will show all the private vars and functions? >> >> johnf > > The idea of the underscore items is that they aren't to be used by > you.
Double leading+trailing underscore attributes are NOT private, they are *special* but public (e.g. __dict__, __class__, __str__, etc.). If you don't believe me, have a look at dir(int) and count the underscored attributes listed. Then try to find __dict__, __name__, __bases__, __base__ or __mro__ within the list. Why are they suppressed? But even if underscored attributes were private, the Python philosophy is that private attributes are private by convention only -- even name-mangled __private methods can be reached if you know how. > If you wish to access private variables and functions you will > almost certainly have to look at the source code to make sure of > what they are and how they can be utilized. Not so. >>> class Parrot(object): ... def _private(self): ... """Private method, returns a magic string.""" ... return "Don't touch!!!" ... >>> Parrot._private.__doc__ "Private method, returns a magic string." -- Steven. -- http://mail.python.org/mailman/listinfo/python-list