Зображення автора
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
Давайте спочатку почнемо з легкого прикладу. Ми створимо клас студентів, який матиме список усіх студентів, і ми матимемо доступ до них за індексом і вважатимемо, що індекс представляє їхній унікальний ідентифікатор студента.
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.
Канвал Мегрін — початківець розробник програмного забезпечення, який цікавиться наукою про дані та застосуванням ШІ в медицині. Kanwal було обрано Google Generation Scholar 2022 для регіону APAC. Канвал любить ділитися технічними знаннями, пишучи статті на актуальні теми, і прагне покращити представництво жінок у технологічній індустрії.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: 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
- МЕНЮ
- доступ
- доступ до
- Achieve
- просунутий
- AI
- ШІ в медицині
- ВСІ
- Дозволити
- аналіз
- та
- APAC
- застосування
- ЕСТЬ
- аргумент
- стаття
- статті
- AS
- прагне
- асоційований
- Атрибути
- автоматично
- BE
- Переваги
- Black
- синій
- вбудований
- by
- call
- званий
- Виклики
- CAN
- зміна
- клас
- код
- збір
- коментар
- повний
- поняття
- Вважати
- беручи до уваги
- Контейнери
- створювати
- виготовлений на замовлення
- дані
- аналіз даних
- наука про дані
- Девід
- глибше
- Визначає
- Розробник
- різний
- відкрити
- подвійний
- e
- легко
- ефективний
- елемент
- елементи
- дозволяє
- Що натомість? Створіть віртуальну версію себе у
- істотний
- Навіть
- приклад
- витяг
- надзвичайно
- знайомий
- кілька
- Перший
- Гнучкість
- слідує
- для
- від
- функція
- функціональний
- функціональність
- покоління
- отримати
- Цілі
- гранти
- великий
- зелений
- обробляються
- Мати
- допомога
- тут
- капот
- надія
- Як
- HTTPS
- i
- ID
- реалізація
- поліпшення
- in
- індекс
- промисловість
- інформація
- екземпляр
- замість
- інтерес
- зацікавлений
- цікавий
- Вступ
- IT
- пунктів
- ЙОГО
- сам
- KDnuggets
- Кін
- ключі
- Знати
- знання
- мова
- вивчення
- як
- ліній
- список
- списки
- погрузка
- пошук
- машина
- навчання за допомогою машини
- магія
- Підлягає ремонту
- маніпулювати
- багато
- медицина
- пам'ять
- метод
- методика
- може бути
- більше
- найбільш
- рухатися
- Імена
- Необхідність
- об'єкт
- об'єкти
- of
- on
- ONE
- оператор
- звичайний
- Інше
- параметр
- пристрасний
- plato
- Інформація про дані Платона
- PlatoData
- положення
- це можливо
- влада
- Програміст
- Python
- Швидко
- підвищення
- читання
- червоний
- регіон
- подання
- представляє
- вимагається
- повертати
- s
- наука
- розділ
- обраний
- SELF
- Поділитись
- стенограма
- Повинен
- Скибочка
- So
- Софтвер
- деякі
- спеціальний
- старт
- Заява
- структура
- студент
- Студентам
- такі
- оточений
- синтаксис
- приймає
- технології
- технологічна галузь
- технічний
- Що
- Команда
- їх
- Їх
- Ці
- Думати
- до
- теми
- трендів
- Типи
- при
- розуміти
- створеного
- us
- Використання
- використання
- користувачі
- значення
- паличка
- широко
- волі
- з
- в
- без
- жінки
- жінки в тех
- б
- запис
- лист
- вашу
- зефірнет