フィボナッチなどで実験

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__()はクラスメソッドの直感を裏切るから、使いどころには注意だなぁ。