Calling every method of an object from __init__

Tim Chase python.list at tim.thechases.com
Mon Jun 19 22:22:10 CEST 2006


> Is there a simple way to call every method of an object from its
> __init__()?
> 
> For example, given the following class, what would I replace the
> comment line in __init__() with to result in both methods being called?
> I understand that I could just call each method by name but I'm looking
> for a mechanism to avoid this.
> 
> class Foo(object):
>     def __init__(self):
>         #call all methods here
>     def test(self):
>         print 'The test method'
>     def hello(self):
>         print 'Hello user'

 >>> class Foo(object):
...     def __init__(self):
...             for method in dir(self):
...                     if method == method.strip("_"):
...				f = getattr(self, method)
...				if callable(f): f()
...     def test(self):
...             print "in test..."
...     def hello(self):
...             print "in hello..."
...
 >>> x = Foo()
in hello...
in test...


This does assume that the method's signature takes no parameters 
and that you don't want to try and call "special" methods such as 
__add__ or "private" methods (usually indicated by leading 
underscores too) while you're going through the available methods.

-tkc







More information about the Python-list mailing list