您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

自定义Python切片,请告知

自定义Python切片,请告知

看到这个注释

object.__getslice__(self, i, j)

从2.0版开始不推荐使用:支持将切片对象用作__getitem__()方法的参数 。(但是,cpython中的内置类型当前仍在实现__getslice__()

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

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

from collections import Sequence

class 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 methods
print s[1:2], len(s), bool(s), s.count(3), s.index(2), iter(s)
python 2022/1/1 18:33:23 有201人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶