I want to see all the variables
johnf
jfabiani at yolo.com
Fri Dec 29 15:04:11 EST 2006
Steven D'Aprano wrote:
> 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."
>
>
>
Ok then how do debug when I have something like "__source" and I need to
know what is available for the object?
John
More information about the Python-list
mailing list