>>41
self[0]を使うとhoge.__getitem__がもう一度呼ばれるので
return list.__getitem__(self, 0)じゃないと駄目

>>34は普通に辞書を作った方がいいと思うが