泛型方法中的动态方法名称感知

时间:2012-10-01 09:55:46

标签: python dynamic

我想在python中创建一个对象,其中对其下任何方法的调用将被路由到单个方法实现。此单一方法中的代码也应使用为处理调用的方法的名称或其返回值。

例如,调用其下任何方法名称的对象将打印方法名称。

>>> the_object.a_made_up_method()
You have called method "a_made_up_method"

(顺便说一句,如果Mock可以提供帮助,我就是全力以赴)

1 个答案:

答案 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