[ python-Bugs-945861 ] dir(object) does not list __name__

SourceForge.net noreply at sourceforge.net
Sun May 2 15:47:54 EDT 2004


Bugs item #945861, was opened at 2004-05-01 06:39
Message generated for change (Comment added) made by montanaro
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=945861&group_id=5470

Category: Documentation
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Thomas Philips (tkpmep)
Assigned to: Nobody/Anonymous (nobody)
Summary: dir(object) does not list __name__

Initial Comment:
dir(object) returns 
['__class__', '__delattr__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__new__', '__reduce__', '__reduce
_ex__', '__repr__', '__setattr__', '__str__']

The __name__ method is not reported

----------------------------------------------------------------------

>Comment By: Skip Montanaro (montanaro)
Date: 2004-05-02 14:47

Message:
Logged In: YES 
user_id=44345

After a message from the submitter, it's apparent he was referring 
to class objects not showing '__name__' attributes in dir() output.  
This is a case of an attribute not being visible to dir() because it's 
not directly present in the object's __dict__ and is trapped at 
evaluation time by __getattr__().  Short of hacking dir() or adding 
a special attribute ("__attributes__"?) to objects which have 
__getattr__() methods I don't see a way around this problem.

Wasn't there discussion of such an attribute which would expose 
such dynamic attributes to dir()?  I don't see anything in the 
implementation of PyObject_Dir().


----------------------------------------------------------------------

Comment By: Skip Montanaro (montanaro)
Date: 2004-05-01 20:02

Message:
Logged In: YES 
user_id=44345

Are you sure that the object has an actual __name__ attribute 
(and not something computed by a __getattr__ method)?

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', 
'__stderr__', '__stdin__', '__stdout__', '_getframe', 'api_version', 
'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 
'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 
'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 
'exitfunc', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 
'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 
'hexversion', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path', 
'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 
'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 
'settrace', 'stderr', 'stdin', 'stdout', 'version', 'version_info', 
'warnoptions']
>>> sys.__name__
'sys'


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=945861&group_id=5470



More information about the Python-bugs-list mailing list