オブジェクトを作っておけば、そのオブジェクトを呼び出したとき (= __call__呼び出し) に色々できる。
例えば、3の倍数が与えられたときだけカウントする関数 memory
class Memory:
def __init__(self):
self.count = 0
def __call__(self, i):
if i % 3 == 0:
self.count += 1
return self.count
if __name__ == "__main__":
memory = Memory()
for i in range(10):
print i, memory(i)
結果が以下。
左列がカウント, 右列が3で割った余りが0の数。
0 1
1 1
2 1
3 2
4 2
5 2
6 3
7 3
8 3
9 4
0 件のコメント:
コメントを投稿