gpt4 book ai didi

python - 我应该使用什么来代替 .__getslice__?

转载 作者:行者123 更新时间:2023-11-28 21:17:18 27 4
gpt4 key购买 nike

我正在将一个库移植到 Python 3。我发现了这个方法:

def __getslice__(self, index, listget=list.__getslice__):
self._resolve()
return listget(self, index)

由于 .__getslice__ 已弃用,因此会引发错误。我查看了文档,似乎大多数人都使用 .__getitem__ 来替换 .__getslice__。唯一的问题是这个库有一个与上述方法完全相同的方法,除了它称为 __getitem__listget=list.__getitem__)。我不知道他们为什么在代码中做出这种区分,但似乎库的原始设计者想要保留这两种方法的独特功能。在移植到 Python 3 时,有什么方法可以保持这一点吗?

最佳答案

您应该能够简单地一起删除 __getslice__ 方法。现在(在 python3.x 中)__getitem__ 除了 __getitem__ 处理的情况之外,还处理与 __getslice__ 过去处理的情况相同的情况——所以,在 python3 中,永远不应调用自定义类(从外观上看可能是列表子类)的 __getslice__ 方法。

另请注意,如果这是一个列表子类,那么您应该使用 super 来调用父类(super class):

def __getitem__(self, index):
self._resolve()
return super().__getitem__(index)

关于python - 我应该使用什么来代替 .__getslice__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850161/

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