/
Вопросы и ответы
/
Python
/

Что делает метод isinstance в python?

Что делает метод isinstance в python?

4 года назад

Andrey Moshkov

Ответы

3

Метод isinstance() в Python используется для проверки принадлежности объекта к определенному классу или типу данных. Он принимает два аргумента: объект, который нужно проверить, и класс или тип данных, к которому нужно проверить принадлежность.

Пример использования метода isinstance():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Создаем класс Person
class Person:
    def __init__(self, name):
        self.name = name

# Создаем объект person
person = Person("Alice")

# Проверяем, является ли объект person экземпляром класса Person
if isinstance(person, Person):
    print("person является экземпляром класса Person")
else:
    print("person не является экземпляром класса Person")

# Создаем список чисел
numbers = [1, 2, 3, 4, 5]

# Проверяем, является ли объект numbers списком
if isinstance(numbers, list):
    print("numbers является списком")
else:
    print("numbers не является списком")

В данном примере мы создаем класс Person, объект person и список чисел numbers. Затем с помощью метода isinstance() мы проверяем, принадлежит ли объект person классу Person и является ли объект numbers списком.

Метод isinstance() полезен, когда необходимо проверить тип данных объекта перед выполнением определенных операций, чтобы избежать ошибок во время выполнения программы.

3 года назад

Olga Pejenkova

2

Функция isinstance() принимает в качестве аргументов какой-либо объект и тип данных, а затем проверяет соответствие одного другому. В случае соответствия возвращает True, при несоответствии возвращает False:

1
2
3
x = isinstance(5, int)

print(x) # => True

Вторым аргументом может быть не один тип данных, а сразу несколько, объединенных в кортеж. Функция вернет True, если объект принадлежит хотя бы к одному из них:

1
2
3
x = isinstance(5, (int, str, list, tuple, bool))

print(x) # => True

Помимо этого функция isinstance() проверяет, принадлежит ли объект указанному классу:

1
2
3
4
5
6
7
8
class myObj:
  name = "John"

y = myObj()

x = isinstance(y, myObj)

print(x) # => True

4 года назад

Владимир Устянивский

1

Функция isinstance() проверяет, является ли объект - object (первый аргумент) экземпляром или подклассом класса classinfo (второй аргумент).

Параметры

Функция isinstance() принимает два параметра:

  • object — объект для проверки
  • classinfo — класс, тип или кортеж классов и типов

Возвращаемое значение

Функция isinstance() возвращает:

  • True, если объект является экземпляром или подклассом класса или любого элемента кортежа
  • False в противном случае
  • Если classinfo не является типом или кортежем типов, возникает исключение TypeError.

Пример:

1
2
3
4
5
6
7
8
9
class Foo:
  a = 5
  
fooInstance = Foo()

print(isinstance(fooInstance, Foo))# True

print(isinstance(fooInstance, (list, tuple)))# False
print(isinstance(fooInstance, (list, tuple, Foo))) #True

2 года назад

Алёна Шереметьева

0

isinstance(obj, тип) проверяет, относится ли объект к типу, и возвращает True или False:

1
2
3
print(isinstance(5, int))      # => True
print(isinstance("5", int))    # => False
print(isinstance(3.0, int))    # => False

Вторым аргументом можно передать кортеж типов: функция вернёт True, если подходит хотя бы один.

1
print(isinstance(5, (int, float)))  # => True

С Python 3.10 то же самое пишут через |: isinstance(5, int | float).

Почему True попадает в список целых

1
2
3
data = [1, True, "a", 2.5, 3, False]
result = [x for x in data if isinstance(x, int)]
print(result)  # => [1, True, 3, False]

В Python bool — подкласс int: True равно 1, False равно 0. Поэтому isinstance(True, int) возвращает True. Чтобы отсеять логические значения, добавьте проверку:

1
2
result = [x for x in data if isinstance(x, int) and not isinstance(x, bool)]
print(result)  # => [1, 3]

isinstance и type

type(obj) is тип проверяет точное совпадение типа. isinstance учитывает наследование:

1
2
3
4
5
6
7
8
9
class Animal:
    pass

class Cat(Animal):
    pass

cat = Cat()
print(isinstance(cat, Animal))  # => True — кошка тоже животное
print(type(cat) is Animal)      # => False — тип объекта Cat

Для проверок в коде обычно выбирают isinstance: код будет работать и с наследниками класса.

Где используют isinstance

Функция, которая принимает разные типы:

1
2
3
4
5
6
7
8
9
def to_list(value):
    if isinstance(value, list):
        return value
    if isinstance(value, (tuple, set)):
        return list(value)
    return [value]

print(to_list(5))       # => [5]
print(to_list((1, 2)))  # => [1, 2]

Проверка, можно ли перебрать объект в цикле:

1
2
3
4
from collections.abc import Iterable

print(isinstance([1, 2], Iterable))  # => True
print(isinstance(5, Iterable))       # => False

Проверка на None пишется без isinstance: if value is None:.

Типы данных разбирают в бесплатном курсе «Основы Python», классы и наследование — на курсе «ООП на Python».

16 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845