0

その下のメソッドへの呼び出しが単一のメソッド実装にルーティングされるオブジェクトをPythonで作成したいと思います。また、この単一のメソッド内のコードは、処理またはその戻り値のために呼び出されたメソッドの名前を使用する必要があります。

たとえば、その下のメソッド名を呼び出すとメソッド名が出力されるオブジェクト。

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

(ところで、もしMock助けられるなら、私はそれで大賛成です)

4

1 に答える 1

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"

ここに別のものがあります. *argsandで動作するようです**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
于 2012-10-01T10:14:30.113 に答える