класс Python __getitem__ обработка отрицательного индекса - PullRequest
1 голос
/ 23 марта 2009

Есть ли общая функция для этого? Сейчас я просто делаю следующее (и переопределяю __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 ]

3 голосов
/ 23 марта 2009

Мне кажется, это нормально. Я не думаю, что есть лучший или встроенный способ сделать это; В конце концов, переопределение - это обеспечение собственной функциональности.

Отредактировано для удаления довольно глупого предложения.

0 голосов
/ 21 сентября 2018

Для тех, кого привезла сюда 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...