Pythonで、ちょっとだけ変態ちっくなフィボナッチ数列計算クラス

あけましておめでとうございます
twitterに投稿するには長いし、地震とは関係ないから本館だと浮いちゃうような適当なメモを、たまにこちらに投稿しようかと思っております。

しばらくコード書いてなかったのでリハビリ。

以前から、Pythonでも、Mathematicaみたく角括弧 []で関数呼び出しできるのでは?(というか配列の遅延評価?)と思ってたので実際にやってみた。

Mathematicaでの64番目のフィボナッチ数列計算例

意味は無いです。というか多分良い子はマネしないほうが良さげ


class Fib(dict):
def __init__(self):
self[0]=0
self[1]=1
def __getitem__(self,idx):
try:
return dict.__getitem__(self,idx)
except KeyError:
self[idx]=self(idx)
return self[idx]
def __call__(self,x):
return self[x-1]+self[x-2]

if __name__=="__main__":
fib=Fib()
fiblist=[0,1,1,2,3,5,8]
for i,f in enumerate(fiblist):
assert fib[i]==f
assert fib[64]==10610209857723

print "done"