> 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 -- http://mail.python.org/mailman/listinfo/python-list