isinstance Python що це: перевірка типу об’єкта в коді

isinstance Python що це: перевірка типу об’єкта в коді

isinstance Python що це — це вбудована функція для перевірки, чи є об’єкт екземпляром заданого класу або одного з кількох класів. Її часто використовують, коли код має по-різному обробляти числа, рядки, списки, власні класи або об’єкти з успадкуванням.

На практиці isinstance() допомагає швидко й зрозуміло перевірити тип без складних порівнянь і заздалегідь відсіяти помилки перед потенційно небезпечною операцією.

Що робить isinstance()

isinstance() повертає True, якщо об’єкт належить указаному класу або будь-якому класу з кортежу класів, і False в усіх інших випадках. Такий підхід зручніший за просте порівняння типів, коли потрібно враховувати успадкування.

Базовий синтаксис виглядає так:

isinstance(об’єкт, клас)

Приклад:

isinstance(42, int) — True

isinstance(42, str) — False

Якщо об’єкт створено на основі дочірнього класу, isinstance() теж поверне True для батьківського класу. У цьому її головна відмінність від перевірки через type().

Коли використовувати isinstance()

isinstance() корисна там, де потрібно вибрати різну логіку обробки залежно від типу даних. Найчастіше її використовують для валідації вхідних значень, роботи з користувацькими об’єктами та обробки кількох допустимих типів одночасно.

  • перевірка чисел, рядків і списків перед обчисленнями;
  • захист від помилок під час роботи із зовнішніми даними;
  • підтримка кількох типів в одній функції;
  • перевірка об’єктів в ієрархії класів;
  • спрощення читабельності умовних конструкцій.

Якщо функція приймає лише певні типи, isinstance() допомагає одразу повернути зрозумілу помилку або вибрати безпечну гілку виконання.

Перевірка кількох класів

isinstance() вміє перевіряти об’єкт одразу за кількома класами, якщо передати кортеж типів. Це зручно, коли одна й та сама операція допустима для різних, але сумісних значень.

Приклад:

isinstance(value, (int, float))

Такий варіант поверне True і для цілого числа, і для числа з плаваючою комою. Якщо перевірка не проходить, варто або розширити список допустимих типів, або обробити значення окремо.

Чим isinstance() відрізняється від type()

isinstance() враховує успадкування, а type() перевіряє точний клас об’єкта. Через це isinstance() частіше підходить для прикладного коду, де важлива не лише конкретна реалізація, а й сумісність через базовий клас.

Наприклад, якщо об’єкт створено як екземпляр дочірнього класу, type(об’єкт) == БатьківськийКлас поверне False, а isinstance(об’єкт, БатьківськийКлас)True.

Перевірка через type() корисна лише тоді, коли потрібен саме точний тип без урахування нащадків. Якщо результат перевірки не збігається з очікуванням, спочатку варто подивитися, чи не використовується в коді дочірній клас.

Типові помилки під час використання

isinstance() працює передбачувано, але помилки зазвичай пов’язані не з самою функцією, а з неправильним очікуванням від перевірки. Найчастіше проблеми виникають, коли розробник плутає точний тип і успадкування або передає не той набір класів.

  • перевіряють через type(), хоча потрібно враховувати успадкування;
  • передають не клас, а рядок або інше значення;
  • забувають про кортеж типів, коли допустимі кілька варіантів;
  • очікують, що функція перевірить внутрішній вміст об’єкта, а не його клас.

Якщо перевірка поводиться неочікувано, корисно спочатку вивести type(об’єкт) і переконатися, що об’єкт справді створений тим типом, який ви очікуєте.

Короткий висновок

isinstance Python що це — це простий і надійний спосіб перевірити, чи належить об’єкт потрібному класу з урахуванням успадкування. Функція робить код зрозумілішим, допомагає уникати помилок і особливо корисна під час валідації даних та обробки різних типів в одній логіці.