Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > __dir__

Reply
Thread Tools

__dir__

 
 
Jacek Generowicz
Guest
Posts: n/a
 
      05-13-2004
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 ?
 
Reply With Quote
 
 
 
 
Peter Otten
Guest
Posts: n/a
 
      05-13-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
 
Reply With Quote
 
 
 
 
Jacek Generowicz
Guest
Posts: n/a
 
      05-13-2004
Peter Otten <(E-Mail Removed)> writes:

> 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.


Great, sounds just perfect for my needs
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments