On 20/06/2006 5:55 AM, 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' >
=== question === Why? What is the use case for a class *all* of whose methods can be called blindly from the __init__()? === code === class Foo(object): def __init__(self): #call all methods here for x in dir(self): if not x.startswith("__"): method = getattr(self, x) if callable(method): print x, type(method), repr(method) method() def test(self): print 'The test method' def hello(self): print 'Hello user' def variablenumberofargsohbuggerbacktothedrawingboard(self, arg1, arg2): print 'The unseen message' obj = Foo() === output === hello <type 'instancemethod'> <bound method Foo.hello of <__main__.Foo object at 0x00AE2B70>> Hello user test <type 'instancemethod'> <bound method Foo.test of <__main__.Foo object at 0x00AE2B70>> The test method variablenumberofargsohbuggerbacktothedrawingboard <type 'instancemethod'> <bound method Foo.variablenumberofargsohbuggerbacktothedrawingboard of <__main__.Foo object at 0x00AE2B70>> Traceback (most recent call last): File "C:\junk\cowie.py", line 17, in ? obj = Foo() File "C:\junk\cowie.py", line 9, in __init__ method() TypeError: variablenumberofargsohbuggerbacktothedrawingboard() takes exactly 3 arguments (1 given) Cheers, John -- http://mail.python.org/mailman/listinfo/python-list