[EMAIL PROTECTED] wrote: > Hi, > > I am writing a library in which I need to find the names of methods > which are implemented in a class, rather than inherited from another > class. To explain more, and to find if there is another way of doing > it, here is what I want to do: I am defining two classes, say A and B, > as: > > class A(object): > def list_cmds(self): > 'implementation needed' > ? > def __init__(self): > ... (rest of class) > > class B(A): > def cmd1(self, args): > pass > def cmd2(self, args): > pass > > I need an implementation of list_cmds in A above so that I can get a > result: > > >>> b=B() > >>> b.list_cmds() > ['cmd1','cmd2'] #order not important > > I will be happy if anybody can point to me any way of doing it, using > class attributes, metaclasses or otherwise. What I don't want to do is > modifying class B, which contains just the cmds, if possible. > > Many thanks in advance. > > k
When I want to do this, I scan the __dict__ attribute of the class. If all you care about is instance methods (which is all I care about at the moment), they're just ordinary functions. Do an isinstance and you've got it. If you want to dig deeper and look at class methods, static methods, descriptors and other stuff, it's a bit more complicated, but not much. John Roth Python FIT -- http://mail.python.org/mailman/listinfo/python-list