__dir__
Peter Otten
__peter__ at web.de
Thu May 13 05:24:31 EDT 2004
Jacek Generowicz wrote:
> Is there some way of affecting the way dir finds the information it
> presents?
>
> For example, supposing a hypothetical __dir__ magic method:
>
> class collection:
> def __init__(self, myname, names):
> self.names = names
> self.myname = myname
> def __dir__(self):
> return ['%s(%s)' % (self.myname,n) for n in self.names]
>
> class thingy:
> def __init__(self, *names):
> self.it = collection('it', names)
>
> thing = thingy('this', 'that', 'theother')
>
> dir(thing)
>
> ['__doc__', '__init__', '__module__', 'it(this)', 'it(that)',
> ['it(theother)']
>
>
> In other words, I would like some attributes of an instance to inject
> some information into the output of dir ... to change the way their
> names are perceived by dir.
>
> Any ideas ?
>>> class C:
... __members__ = ["Is this evil?", "So what"]
...
>>> dir(C)
['__doc__', '__members__', '__module__']
>>> dir(C())
['Is this evil?', 'So what', '__doc__', '__members__', '__module__']
>>>
However, __members__ is marked as deprecated and, even more important, I
don't know what the side effects of the above may be.
Highly unrecommended.
Peter
More information about the Python-list
mailing list