iteration over methods

Giles Brown giles_brown at
Tue Jan 7 21:33:11 CET 2003

Oliver Vecernik <vecernik at> wrote in message news:<3E1AB7B3.4050404 at>...
> Hi!
> I've got an object with some methods:
> class Someclass(self):
>      def __init__(self):
>          pass
>      def method1(self):
>          pass
>      def method2(self):
>          pass
>      ...
>      def runallmethods(self):
>          for func in dir(self):
>              if func[0:4] == 'method':
>                  apply(self.func) # Does *not* work!
> I'd like to run all methods named 'method...' in a sequence. Has anybody 
> a clue how to achive this?

As an alternative to dir() you could use the inspect module:

import inspect

class Someclass:
     def __init__(self):
     def method1(self):
         print "called method1"
     def method2(self):
         print "called method2"
     def runallmethods(self):
         for name, method in inspect.getmembers(self, inspect.ismethod):
             if name[:6] == 'method':

class Derived(Someclass):

    def method2(self):
        print "called derived method2"

    def method3(self):
        print "called method3"

x = Derived()

More information about the Python-list mailing list