Getting a list of member functions

Christian Tismer tismer at tismer.com
Fri Dec 15 12:12:15 CET 2000


Jay O'Connor wrote:
> 
> Hi,
> 
>         I'm trying to get a list of the member functions for an object.  I would think __members__ or __methods__ would work
> 
> Here's what I'm getting

[of course not working...]

> This is on Pythong 1.5.2
> 
> Did I miss something?
> 
> I know I could probably loop through the classes __dict__ and pull out the functions, but that's kinda kludgey and would miss instance specific methods

Classes do not implement __members__ and __methods__ automagically,
but you can do this yourself.

If you want to provide static members for instance, just put
a list
  __members__ = ["var1", "var2", "var3"]
into your class.
If you want to make this more dynamic or instance specific,
it is a little more complicated, since you then have to
overwrite __getattr__ and compute the __members__ attribute
on-the-fly.

>>> class demo:
... 	def __init__(self, **vars):
... 		self.__dict__.update(vars)
... 	def __getattr__(self, key):
... 		if key=="__members__":
... 			return self.__dict__.keys()
... 		raise AttributeError, key
... 	
>>> x=demo(a=5, b=7, c=42)
>>> x.__members__
['b', 'c', 'a']
>>> x.x=0
>>> x.__members__
['b', 'c', 'x', 'a']
>>> 

Of course this gets more clumsy if you also have to support
instance-specific methods. But I doubt that these are
so urgent to have at all.

ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Kaunstr. 26                  :    *Starship* http://starship.python.net
14163 Berlin                 :     PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint       E182 71C7 1A9D 66E9 9D15  D3CC D4D7 93E2 1FAE F6DF
     where do you want to jump today?   http://www.stackless.com




More information about the Python-list mailing list