我想在python中创建一个对象,其中对其下任何方法的调用将被路由到单个方法实现。此单一方法中的代码也应使用为处理调用的方法的名称或其返回值。
例如,调用其下任何方法名称的对象将打印方法名称。
>>> the_object.a_made_up_method()
You have called method "a_made_up_method"
(顺便说一句,如果Mock
可以提供帮助,我就是全力以赴)
答案 0 :(得分:4)
也许像
class My():
def __getattr__(self, name):
def method():
print 'You have called method "{}"'.format(name)
return method
>>> a = My()
>>> a.a_made_up_method()
You have called method "a_made_up_method"
这是另一个,似乎适用于*args
和**kwargs
:
class My():
def __getattr__(self, name):
return self.method(name)
def method(self, name):
def dostuff(*args, **kwargs):
print "I'm called as {}!".format(name)
print args, kwargs
return dostuff