杂谈

随意创建一个类,如果该类实现了__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

 

posted @ 2019-10-08 16:38  tianqibucuo  阅读(101)  评论(0)    收藏  举报