@MrDoberman

Как получить значение в объекте slice(__getitem__)?

Есть функция __getitem__
На вход мы подаем [:][1]

Если вывести элемент item в функции __getitem__ то мы получим slice(None, None, None). Как мне получить значение идущее после [:], в данном случае, как получить 1
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
За один шаг - никак. Потому что это две операции.
x = l[:][1]
# это то же самое, что и
tmp = l[:]  # l.__getitem__(slice(None, None, None))
x = tmp[1]  # tmp.__getitem__(1)

У тебя есть два выхода. Либо ты первым __getitem__ возвращаешь какой-то специальный промежуточный объект, который уже своим __getitem__ принимает 1 и выполняет нужное действие.
Либо ты меняешь способ обращения к объекту на кортеж:
x = l[:, 1]
Тогда у тебя __getitem__ получит кортеж из двух элементов: (slice(None, None, None), 1)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы