The default python behaviour when calling a class method that does not exist is that you get an exception:

>>> class A(object):
... pass
...
>>> a = A()
>>> a.getBlablabla()
Traceback (most recent call last):
File "", line 1, in ?
AttributeError: 'A' object has no attribute 'getBlablabla'


But if you want a class that catchs all methods even methods that do not exist, you have to override the __getattribute__ method:

>>> class A(object):
... def __getattribute__(self,name):
... try:
... return object.__getattribute__(self, name)
... except AttributeError:
... return self.catch_all(name)
...
... def realmethod(self):
... print 'I am realmethod'
...
... def catch_all(self,name):
... return lambda: "catched: %s" % name

Here we have the __getattribute___ method will try to call the method you want to call, if it exists you will get it:

>>> a.realmethod()
I am realmethod

and if you try to call a method that does not exist, the catch_all method will be called:

>>> a = A()
>>> a.getBlablabla()
'catched: getBlablabla'