フィボナッチなどで実験
class Fibo: def __init__(self): self.a1 = 0 self.a2 = 1 def __call__(self, num): for x in range(num): tmp = self.a2 + self.a1 self.a2 = self.a1 self.a1 = tmp print tmp, def makeFibo(self, num): for x in range(num): tmp = self.a2 + self.a1 self.a2 = self.a1 self.a1 = tmp print tmp, def main(): fibo1 = Fibo() fibo1(10) print fibo2 = Fibo() fibo2.makeFibo(10) if __name__ == "__main__": main()
結果
D:\workspace\Python\3-10>python fibo.py 1 1 2 3 5 8 13 21 34 55 1 1 2 3 5 8 13 21 34 55
__call__()はクラスメソッドの直感を裏切るから、使いどころには注意だなぁ。