有没有一种方法可以实现__getitem__
来支持整数和切片索引,而不需要手动检查参数的类型?
我看到了很多这种形式的示例,但是对我来说似乎非常hacky。
def __getitem__(self,key):
if isinstance(key,int):
# do integery foo here
if isinstance(key,slice):
# do slicey bar here
顺带一提,为什么这个问题会存在呢?有时返回一个整数,有时返回一个切片是奇怪的设计。调用foo[4]
应该调用foo.__getitem__(slice(4,5,1))
或类似的方法。
key
不一定是整数,因此试图将其强制转换为切片可能有点奇怪。 - Corley Brigman