6

このコードは、Mark Lutz による Learning Python 4th Edition から引用されています。

class tracer:
            def __init__(self, func):
               self.calls = 0
               self.func = func
            def __call__(self, *args):
               self.calls += 1
               print('call %s to %s' % (self.calls, self.func.__name__))
               self.func(*args)


@tracer

def spam(a, b, c):
    print(a + b + c)

spam(1, 2, 3)

また、このコードを実行すると、1、2、3 の合計も表示されませんが、本では表示されることが示されています。このコード全体に頭を悩ませています。ここで何が起こっているのかわかりません。

4

2 に答える 2