杂谈
随意创建一个类,如果该类实现了__getitem__方法(无论如何实现),则该类的对象就能实现切片操作:
>>> class MySeq: ... def __getitem__(self, index): ... return index # ➊ ... >>> s = MySeq() >>> s[1] # ➋ 1 >>> s[1:4] # ➌ slice(1, 4, None) >>> s[1:4:2] # ➍ slice(1, 4, 2) >>> s[1:4:2, 9] # ➎ (slice(1, 4, 2), 9) >>> s[1:4:2, 7:9] # ➏ (slice(1, 4, 2), slice(7, 9, None))
对对象进行切片操作,返回的是一个slice对象(slice是一个类)。
没有实现__getitem__方法的则不能进行此操作:
>>> class Myseq(): ... pass ... >>> a = Myseq() >>> a[1,4] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'Myseq' object is not subscriptable

浙公网安备 33010602011771号