gpt4 book ai didi

python - 有没有一种简单的方法可以覆盖列表对象的方法 __getitem__?

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:22 24 4
gpt4 key购买 nike

<分区>

我正在尝试定义一个默认样式列表对象:

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。

所以最后我糟糕的解决方案出来了。原始和蛮力..有任何有效或简单的解决方案吗?提前致谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com