python类__getitem__否定索引处理

时间:2009-03-23 20:37:39

标签: python class indexing

这是否有共同的功能?现在我正在做以下事情(并覆盖__len__

idx < 0:
    idx = len(self) + idx
if idx < 0 or idx >= len(self):
    raise IndexError, "array index (%d) out of range [0, %d)" %(idx, len(self))

2 个答案:

答案 0 :(得分:3)

这对我来说似乎很好。我不认为有更好的或内置的方式来做到这一点;毕竟,重写是关于提供自己的功能。

编辑删除相当愚蠢的建议。

答案 1 :(得分:0)

对于那些由Google带到这里的人,我想我要补充一下我刚提出的内容。似乎对我来说很棒。

def __getitem__(self, index):
    # Do this until the index is greater than 0.
    while index < 0:
        # Index is a negative, so addition will subtract.
        index += len(self)
    if index >= len(self):
        raise IndexError
    # Replace with your custom interface.
    return self.__instance.GetValue(index)