|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- >>> class C:
- def __getitem__(self, index):
- print(index)
-
- >>> c[2]
- 2
- >>> c[2:8]
- slice(2, 8, None)
复制代码
今天在学习小甲鱼老师课程的时候, 学到这里,不知道这个slice是从哪里来的,请教各位老师指点.
在类C中已经定义了__getitem__魔法方法,按里说直接调用print(index)就行,是怎么调用的,调用到slice去啦?
你的困惑很正常,我来解释一下。
在Python中,slice 是一种内置类型,用于表示被切片的信息。当你使用冒号 (:) 语法进行切片操作时,Python会自动创建一个 slice 对象。这个对象包含了切片的开始、结束以及步进值(step)。
在你的例子中, c[2:8] 这个操作被 Python 解析为一个切片操作,因此 Python 会创建一个 slice 对象表示这个切片信息(从第2个元素到第8个元素,步进值默认为 None)。
当调用 c[2:8] 时,因为你的类 C 已经定义了 __getitem__ 方法,这个方法会被调用,并且会接收到一个参数。由于这是一个切片操作,所以这个参数就是一个 slice 对象。
这也就是为什么当你打印 index 的时候,你看到的是 slice(2, 8, None) ,这其实就是 slice 对象的字符串表示形式,告诉你这个切片操作的开始、结束以及步进值。你可以通过 slice 对象的 start 、 stop 和 step 属性来获取这些信息。
|
|