自定义Python切片,请告知

自定义Python切片,请告知,第1张

自定义Python切片,请告知

看到这个注释:

object.__getslice__(self, i, j)

从2.0版开始不推荐使用:支持将切片对象用作

__getitem__()
方法的参数
。(但是,CPython中的内置类型当前仍在实现
__getslice__()
因此,在实现切片时,必须在派生类中重写它。

因此,因为您

list
已经继承了子类
__getslice__
,所以即使它已弃用,也必须覆盖它。

我认为您通常应该避免对内建函数进行子类化,因为有太多奇怪的细节。如果您只想要一个行为类似于列表的类,则可以使用ABC来帮助您:

from collections import Sequenceclass MyList(Sequence):    def __init__(self, *items):        self.data = list(items)    def __len__(self):        return len(self.data)    def __getitem__(self, slice):        return self.data[slice]s = MyList(1,2,3)# lots of free methodsprint s[1:2], len(s), bool(s), s.count(3), s.index(2), iter(s)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5631648.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存