我正在将一个库移植到Python 3.我找到了这个方法:
def __getslice__(self, index, listget=list.__getslice__):
self._resolve()
return listget(self, index)
由于不推荐使用.__getslice__
而引发错误。我查看了文档,似乎.__getitem__
是大多数人用来替换.__getslice__
的内容。唯一的问题是这个库的方法与上面的方法完全相同,只是它被称为__getitem__
和listget=list.__getitem__
)。我不知道为什么他们在代码中做出了这种区分,但似乎图书馆的原始设计者想要保留两种方法的独特功能。移植到Python 3时,有什么办法可以保留这个吗?
答案 0 :(得分:5)
您应该能够一起删除__getslice__
方法。现在(在python3.x中)__getitem__
处理__getslice__
除了__getitem__
处理的情况之外用来处理的相同情况 - 在python3中,__getslice__
另请注意,如果这是一个列表子类,那么您应该使用super
来调用超类:
def __getitem__(self, index):
self._resolve()
return super().__getitem__(index)