python 的切片語法傳入 __getitem__ 的引數有兩種, 第一種是普通整數或物件, 也就是直接寫 t[0], t["abc"] 這樣, 第二種是切片, 即 t[0: 1], t[:: -1] 這種. 對於後者, 實際引數 i 的型別將是一個 slice 物件.
程式碼示例
class Test(object):
def __init__(self):
self.tokens = []
def __getitem__(self, i):
if isinstance(i, slice):
print "Slice object:", i
return self.tokens[i.start: i.stop]
else:
print "Integer:", i
return self.tokens[i]
t = Test()
t.tokens = range(10)
t[0]
t[1: 2]
python 的切片語法傳入 __getitem__ 的引數有兩種, 第一種是普通整數或物件, 也就是直接寫 t[0], t["abc"] 這樣, 第二種是切片, 即 t[0: 1], t[:: -1] 這種. 對於後者, 實際引數 i 的型別將是一個 slice 物件.
程式碼示例
class Test(object):
def __init__(self):
self.tokens = []
def __getitem__(self, i):
if isinstance(i, slice):
print "Slice object:", i
return self.tokens[i.start: i.stop]
else:
print "Integer:", i
return self.tokens[i]
t = Test()
t.tokens = range(10)
t[0]
t[1: 2]