How to intercept a method call which doesn't exist?
python
Solution
Overwrite the `__getattr__()` magic method:
class MagicClass(object):
def __getattr__(self, name):
def wrapper(*args, **kwargs):
print "'%s' was called" % name
return wrapper
ob = MagicClass()
ob.unknown_method()
ob.unknown_method2()
prints
'unknown_method' was called
'unknown_method2' was called
Problem
I want to create a class that doesn't gives an `Attribute Error` on call of any method that may or may not exists: My class: ``` class magic_class: ... # How to over-ride method calls ... ``` Expected Output: ``` ob = magic_class() ob.unknown_method() # Prints 'unknown_method' was called ob.unknown_method2() # Prints 'unknown_method2' was called ``` Now, `unknown_method` and `unknown_method2` doesn't actually exists in the class, but how can we intercept the method call in python ?