Calling every method of an object from __init__
George Sakkis
george.sakkis at gmail.com
Mon Jun 19 16:43:00 EDT 2006
Rob Cowie wrote:
> Hi all,
>
> 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'
>
> Thanks,
>
> Rob C
First off, calling *every* method of an object is most likely a bad
idea. A class has special methods defined automatically and you
probably don't intend calling those. The way to go is have a naming
convention for the methods you want to call, e.g. methods starting with
"dump_". In this case you could use the inspect module to pick the
object's methods and filter out the irrelevant methods:
import inspect
class Foo(object):
def __init__(self):
for name,method in inspect.getmembers(self,inspect.ismethod):
if name.startswith('dump_'):
method()
def dump_f(self):
print 'The test method'
def dump_g(self):
print 'Hello user'
if __name__ == '__main__':
Foo()
George
More information about the Python-list
mailing list