デフォルトのスタイル リスト オブジェクトを定義しようとしています。
class ilist(list):
def __init__(self,r=list(),dft=None):
list.__init__(self,r)
self.dft=dft
def __getitem__(self,n):
if len(self)<=n:
for i in range(n-len(self)+1):
self.append(self.dft)
for i,v in enumerate(self):
if i+1==len(self):
return v
x=ilist()
print x[4]
print x
できます。
>>>
None
[None, None, None, None, None]
しかし、私の ilist を照会するのはひどいと思います。私は次の方法を試しました:
def __getitem__(self,n):
from operator import getitem
if len(self)<=n:
for i in range(n-len(self)+1):
self.append(self.dft)
return getitem(self,n)
しかし、事実はそれが完全にself[n]に等しく、原因を示していますRuntimeError: maximum recursion depth exceeded
親クラスのlist
メソッドも流用してみましたが、形はx.__getitem__(y)
. それをilistに適応させる方法がわかりません。
それで、ついに私のひどい解決策が出てきました。生で力ずく..効率的または簡単な解決策はありますか? 前もって感謝します。