Курс Python → Метод getitem для доступа к элементам последовательности

Метод getitem в Python используется для доступа к элементам последовательности по их ключу или индексу. Когда мы обращаемся к элементу в последовательности, Python вызывает этот метод для получения значения по указанному ключу. В случае, если мы используем некорректный тип ключа, например строку вместо целого числа, метод должен выбросить исключение TypeError.

Если ключ, переданный методу getitem, не соответствует ни одному элементу в последовательности, то метод должен вызвать исключение KeyError. Это происходит, например, когда мы пытаемся получить доступ к элементу по ключу, которого нет в словаре или по индексу, который выходит за пределы списка.

Для более наглядного понимания работы метода getitem давайте рассмотрим пример. Предположим, у нас есть список fruits = ['apple', 'banana', 'orange']. Если мы вызовем fruits[0], то Python фактически вызовет метод getitem для списка fruits и передаст ему ключ 0, чтобы получить значение ‘apple’.

class MySequence:
    def __init__(self, data):
        self.data = data

    def __getitem__(self, key):
        if not isinstance(key, int):
            raise TypeError("Ключ должен быть целым числом")
        if key >= len(self.data) or key < -len(self.data):
            raise KeyError("Нет элемента с таким ключом")
        return self.data[key]

# Пример использования
seq = MySequence(['a', 'b', 'c'])
print(seq[1])  # Выведет 'b'
print(seq[3])  # Вызовет KeyError

В данном примере мы создали собственный класс MySequence, в котором переопределили метод getitem. Мы проверяем тип ключа и его корректность, выбрасывая соответствующие исключения в случае ошибок. Затем мы возвращаем значение элемента по ключу из внутреннего списка data.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Удаление ресурса в Python
  2. Подсчет частоты элементов с Counter
  3. Объединение словарей в Python
  4. Метод __iand__ для пользовательских классов
  5. Работа с контекстными менеджерами
  6. Логирование в Python
  7. Создание копии списка в Python
  8. Определение функций с необязательными аргументами
  9. Сравнение def и lambda функций в Python
  10. Протокол управления контекстом
  11. Переворот строки
  12. Списковое включение в Python
  13. Работа с функцией next() в Python
  14. Удаление специальных символов с помощью re.sub
  15. Управление мышью и клавиатурой с Pyautogui
  16. Удаление знаков препинания в Python
  17. Оператор space-invader
  18. Логические значения в Python
  19. Lambda-функция в Python: использование с map() и sum()
  20. Переопределение оператора % для объектов
  21. Обработка исключения UnboundLocalError
  22. Работа с itertools
  23. Просмотр файла в Jupyter Noteboo
  24. Оптимизация гиперпараметров с Scikit Optimize
  25. Magic Commands — улучшение работы с Python
  26. Модуль sys: основы
  27. Метод rlshift для битового сдвига
  28. Рекурсия для обращения строки
  29. Печать месячного календаря
  30. Проблема сравнения словарей
  31. Создание обратного итератора
  32. Создание циклической ссылки
  33. Виртуальные среды в Python
  34. Списки в Python
  35. Сортировка в Python
  36. TypedDict для kwargs в Python 3.12
  37. Инициализация переменных
  38. Работа с геоданными с помощью geopy
  39. Улучшение читаемости кода в Python
  40. Сокращение ссылок с pyshorteners
  41. Регулярные выражения в Python
  42. Основы Python за 14 дней
  43. Отрицательные индексы списков в Python
  44. Многострочные комментарии в Python
  45. Срез в Python
  46. Python enumerate() использование
  47. Объединение, распаковка и деструктуризация

Marketello читают маркетологи из крутых компаний