[Python-Dev] SWIG and rlcompleter

Guido van Rossum gvanrossum at gmail.com
Wed Aug 17 21:10:15 CEST 2005

On 8/17/05, Timothy Fitz <firemoth at gmail.com> wrote:
> On 8/16/05, Raymond Hettinger <raymond.hettinger at verizon.net> wrote:
> > -0  The behavior of dir() already a bit magical.  Python is much simpler
> > to comprehend if we have direct relationships like dir() and vars()
> > corresponding as closely as possible to the object's dictionary.  If
> > someone injects non-strings into an attribute dictionary, why should
> > dir() hide that fact?
> Indeed, there seem to be two camps, those who want dir to reflect __dict__
> and those who want dir to reflect attributes of an object. It seems to
> me that those who want dir to reflect __dict__ should just use
> __dict__ in the first place.


> However, in the case of dir handling non-strings, should dir handle
> non-valid identifiers as well, that is to say that while
> foo.__dict__[2] = ... is an obvious case what about foo.__dict__["1"]
> ?

See below.

> Right now the documentation says that it returns "attributes", and I
> would not consider non-strings to be attributes, so either the
> documentation or the implementation should rectify this disagreement.

I think that dir() should hide non-strings; these aren't attributes if
you believe the definition that an attribute name is something
acceptable to getattr() or setattr().

Following this definition, the string "1" is a valid attribute name
(even though it's not a valid identifier), but the number 1 is not.

Try it. :-)

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-Dev mailing list