Изображение по автору
Python — волшебный язык со многими концепциями, с которыми даже опытные пользователи могут быть незнакомы. Дандер или Магические методы - один из них. Волшебные методы — это специальные методы, окруженные двойным подчеркиванием. Они не вызываются явно, в отличие от обычных методов в Python. Одним из таких магических методов является __getitem__
метод, позволяющий объектам Python вести себя как последовательности или контейнеры, например, списки, словари и кортежи. Он берет индекс или срез и извлекает связанное с ним значение из коллекции. Он вызывается автоматически всякий раз, когда мы используем indexer [ ]
оператор для доступа к элементам внутри вашего объекта.
Думайте об этом методе как о волшебной палочке, которая дает вам возможность извлекать необходимую информацию, просто написав несколько строк кода. Интересно правда? Этот метод также широко используется в анализе данных и машинном обучении. Итак, давайте углубимся в __getitem__
метод и откройте для себя его силу и гибкость.
Я хочу, чтобы вы поняли, что ваша обязанность как программиста на Python — это больше, чем просто написание функционального кода. Ваш код должен быть эффективным, читабельным и ремонтопригодным. С использованием __getitem__
поможет вам достичь этих целей. Вот некоторые другие преимущества использования этого волшебного метода:
- Сокращает использование памяти, позволяя извлекать только необходимую информацию вместо загрузки всей структуры данных в память.
- Обеспечивает большую гибкость в том, как данные обрабатываются и манипулируются
- Позволяет перебирать коллекцию, не зацикливаясь на данных.
- Расширяет функциональность, позволяя вам писать расширенную индексацию, которая может быть невозможна со встроенными типами.
- Упрощает код, так как использует знакомую нотацию
Синтаксис для __getitem__
метод выглядит следующим образом:
def __getitem__(self, index): # Your Implementation pass
Он определяет поведение функции и принимает в качестве параметра индекс, к которому вы пытаетесь получить доступ. Мы можем использовать этот метод следующим образом:
my_obj[index]
Это переводится в утверждение my_obj.__getitem__(index)
под капотом. Теперь вы можете подумать, чем же он отличается от встроенного indexer []
оператор? Везде, где вы используете это обозначение, python автоматически вызывает __getitem__
метод для вас и является сокращением для доступа к элементам. Но если вы хотите изменить поведение индексации для пользовательских объектов, вам нужно явно вызвать метод __getitem__
метод.
Пример #01
Сначала начнем с простого примера. Мы создадим класс Student, в котором будет список всех студентов, и мы сможем получить к ним доступ по индексу и считать, что индекс представляет их уникальный идентификатор студента.
class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])
Вывод:
Теперь мы перейдем к расширенному примеру, где мы изменим поведение индексации с помощью __getitem__
метод. Предположим, что у меня есть список строковых элементов, и я хочу получить элемент всякий раз, когда я ввожу его индексную позицию, и я также могу получить индексную позицию, если введу саму строку.
class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green'])
Вывод:
red
green
0 2
Этот метод чрезвычайно полезен для быстрого поиска атрибутов экземпляра. Учитывая гибкость и универсальность этого метода, я бы сказал, что это один из самых малоиспользуемых магических методов Python. Надеюсь, вам понравилось читать эту статью, и дайте мне знать в разделе комментариев, если вам интересно узнать о других магических методах в Python.
Канвал Мерин — начинающий разработчик программного обеспечения, проявляющий большой интерес к науке о данных и применению ИИ в медицине. Канвал был выбран стипендиатом Google Generation Scholar 2022 для региона APAC. Канвал любит делиться техническими знаниями, создавая статьи на актуальные темы, и стремится улучшить представленность женщин в технологической отрасли.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://www.kdnuggets.com/2023/03/introduction-getitem-magic-method-python.html?utm_source=rss&utm_medium=rss&utm_campaign=introduction-to-__getitem__-a-magic-method-in-python
- :является
- 2022
- 8
- a
- О нас
- доступ
- доступа
- Достигать
- продвинутый
- AI
- ИИ в медицине
- Все
- Позволяющий
- анализ
- и
- APAC
- Приложения
- МЫ
- аргумент
- гайд
- статьи
- AS
- стремящийся
- связанный
- Атрибуты
- автоматически
- BE
- Преимущества
- Черный
- Синии
- встроенный
- by
- призывают
- под названием
- Объявления
- CAN
- изменение
- класс
- код
- лыжных шлемов
- комментарий
- полный
- понятия
- Рассматривать
- принимая во внимание
- Контейнеры
- Создайте
- изготовленный на заказ
- данным
- анализ данных
- наука о данных
- Давид
- более глубокий
- Определяет
- Застройщик
- различный
- обнаружить
- двойной
- e
- легко
- эффективный
- элемент
- элементы
- позволяет
- Enter
- существенный
- Даже
- пример
- извлечение
- чрезвычайно
- знакомый
- несколько
- First
- Трансформируемость
- следующим образом
- Что касается
- от
- функция
- функциональная
- функциональность
- поколение
- получить
- Цели
- гранты
- большой
- Зелёная
- обрабатываются
- Есть
- помощь
- здесь
- капот
- надежды
- Как
- HTTPS
- i
- ID
- реализация
- улучшение
- in
- индекс
- промышленность
- информация
- пример
- вместо
- интерес
- заинтересованный
- интересный
- Введение
- IT
- пункты
- ЕГО
- саму трезвость
- КДнаггетс
- Острый
- ключи
- Знать
- знания
- язык
- изучение
- такое как
- линий
- Список
- Списки
- погрузка
- поиск
- машина
- обучение с помощью машины
- магия
- Ремонтопригодный
- манипулировать
- многих
- медицина
- Память
- метод
- методы
- может быть
- БОЛЕЕ
- самых
- двигаться
- имена
- Необходимость
- объект
- объекты
- of
- on
- ONE
- оператор
- обычный
- Другие контрактные услуги
- параметр
- страстный
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- должность
- возможное
- мощностью
- Программист
- Питон
- САЙТ
- повышение
- Reading
- Red
- область
- представление
- представляет
- обязательный
- возвращают
- s
- Наука
- Раздел
- выбранный
- SELF
- Поделиться
- стенография
- должен
- Ломтик
- So
- Software
- некоторые
- особый
- Начало
- заявление
- Структура
- "Студент"
- Студенты
- такие
- окруженный
- синтаксис
- принимает
- технологии
- техническая промышленность
- Технический
- который
- Ассоциация
- их
- Их
- Эти
- Think
- в
- Темы
- трендов
- Типы
- под
- понимать
- созданного
- us
- Применение
- использование
- пользователей
- ценностное
- палочка
- широко
- будете
- в
- без
- Женщина
- женщины в технике
- бы
- записывать
- письмо
- ВАШЕ
- зефирнет