gpt4 book ai didi

python - Python getslice项目运算符覆盖功能不起作用

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

练习here中发布的示例以学习Python OOP。我正在寻找“ 1到4”的输出,但它却在下面抛出错误。

class FakeList:
def __getslice___(self,start,end):
return str(start) + " to " + str(end)

f = FakeList()

f[1:4]


注意:使用 f.__getitem__(1, 4)可以得到正确的输出-“ 1至4”,如上面的链接所示。


  追溯(最近通话
  最后)在()
  ----> 1 f [1:4]
  
  TypeError:“ FakeList”对象不可下标

最佳答案

如注释中所述,__getitem__方法采用一个slice类型的参数,您可以通过slice.startslice.stop访问范围的开始/结束,这是一个示例,其中包含更多调试输出,以显示正在进行:

class FakeList:

def __getitem__(self, slice_):
print('slice_', slice_)
print('type(slice_)', type(slice_))
print('dir(slice_)', dir(slice_))
return str(slice_.start) + " to " + str(slice_.stop)

f = FakeList()

print(f[1:4])


输出:

slice_ slice(1, 4, None)

type(slice_) <class 'slice'>

dir(slice_) ['__class__', '__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'indices', 'start', 'step', 'stop']

1 to 4

关于python - Python getslice项目运算符覆盖功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727197/

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