我想在python中创建一个对象,其中对其下的任何方法的调用将被路由到单个方法实现。此外,此单一方法中的代码应使用调用的方法名称或其返回值。通用方法中的动态方法名称意识
例如,调用其下的任何方法名称的对象将打印方法名称。
>>> the_object.a_made_up_method()
You have called method "a_made_up_method"
(顺便说一句,如果Mock
能帮上忙,我所有的话)
我想在python中创建一个对象,其中对其下的任何方法的调用将被路由到单个方法实现。此外,此单一方法中的代码应使用调用的方法名称或其返回值。通用方法中的动态方法名称意识
例如,调用其下的任何方法名称的对象将打印方法名称。
>>> the_object.a_made_up_method()
You have called method "a_made_up_method"
(顺便说一句,如果Mock
能帮上忙,我所有的话)
也许像
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
你知道python装饰器吗? – wim
@wim - 装饰器是否需要实现来装饰?在我的情况下,我想避免实现这个对象可能接收的所有各种方法调用,并建立一个替代所有这些对象的通用方法。 – Jonathan
对不起,我错误地理解了你的问题。 – wim