Isinstance python что это
Перейти к содержимому

Isinstance python что это

  • автор:

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

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

x = isinstance(5, int) print(x) # => True 

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

x = isinstance(5, (int, str, list, tuple, bool)) print(x) # => True 

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

class myObj: name = "John" y = myObj() x = isinstance(y, myObj) print(x) # => True 

Отличие type от isinstance

Хотя функция type() возвращает тип переданного аргумента, с ее помощью можно проверить, принадлежит ли аргумент тому или иному типу:

>>> a = 10 >>> b = [1,2,3] >>> type(a) == int True >>> type(b) == list True >>> type(a) == float False

В отличие от type() , функция isinstance() специально создана для проверки принадлежности данных определенному классу (типу данных):

>>> isinstance(a,int) True >>> isinstance(b,list) True >>> isinstance(b,tuple) False >>> c = (4,5,6) >>> isinstance(c,tuple) True

Кроме того isinstance() по сравнению с type() позволяет проверить данное на принадлежность хотя бы одному типу из кортежа, переданного в качестве второго аргумента:

>>> isinstance(a,(float, int, str)) True >>> isinstance(a,(list, tuple, dict)) False

Другое отличие isinstance() . Эта функция поддерживает наследование. Для isinstance() экземпляр производного класса также является экземпляром базового класса. Для type() это не так:

>>> class A (list): . pass . >>> a = A() >>> type(a) == list False >>> type(a) == A True >>> isinstance(a,A) True >>> isinstance(a,list) True

Функция isinstance() в Python, принадлежность экземпляра к классу

Позволяет проверить принадлежность экземпляра к классу

Синтаксис:
isinstance(object, classinfo) 
Параметры:
  • object — объект, требующий проверки,
  • classinfo — класс, кортеж с классами или рекурсивный кортеж кортежей или с версии Python 3.10 может быть объединением нескольких типов (например int | str ).
Возвращаемое значение:
Описание:

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

Если объект object не является экземпляром данного типа, то функция всегда возвращает False .

Функцией isinstance() можно проверить класс, кортеж с классами (с Python 3.10 может быть записью, объединяющей нескольких типов, например, int | str ), либо рекурсивный кортеж кортежей. Другие типы последовательностей аргументом classinfo не поддерживаются.

Если аргумент classinfo не является классом, либо кортежем с классами (с Python 3.10 может быть записью, объединяющей нескольких типов, например, int | str ), то возбуждается исключение TypeError .

Изменено в Python 3.10: аргумент classinfo может иметь тип Union и записываться как побитовое или — | .

>>> isinstance(1, int | str) # True >>> isinstance("", int | str) # True 

Доступ к пользовательскому типу для объекта union можно получить из types.UnionType и использовать для проверок isinstance() . Невозможно создать экземпляр объекта из типа:

>>> import types >>> isinstance(int | str, types.UnionType) # True >>> types.UnionType() # Traceback (most recent call last): # File "", line 1, in # TypeError: cannot create 'types.UnionType' instances 

Примеры проверок принадлежности экземпляра к классу.

Взгляните на следующий код:

>>> a = 3 >>> isinstance(a, object) # True >>> type(a) == object # False >>> issubclass(type(a), object) # True 

Молодые программисты часто не понимают что здесь происходит. Давайте разбираться.

Функция type() с одним аргументом object возвращает тип объекта — точный класс, из которого был создан переданный аргумент object . Мы знаем, что все целые числа в Python являются типом int . Это означает, что проверка объекта type(3) == object в точности эквивалентна проверке объекта int == object , что однозначно неверно.

В Python, как это известно — все является объектом, следовательно дочерний класс (в данном случае int ) наследуется от родительского (в данном случае object ) и считается, что такое поведение имеет отношение is a . Отношение is a — это то, что проверяет функция isinstance() .

Существует аналогичная функция issubclass() для проверки того же отношения, только для класса вместо экземпляра этого класса. В большинстве случаев isinstance(x, y) == issubclass(type(x), y) .

Классы всегда имеют одну и ту же ссылку в ​​одной сессии интерпретатора, поэтому можно использовать оператор is вместо оператора == для сравнения. Таким образом, type(3) is int будет истинным.

Изобразим сказанное выше на примере:

class Base: def __init__(self): self.foo='foo' class Sub(Base): def __init__(self): super().__init__() >>> obj = Base() >>> sub_obj = Sub() >>> isinstance(obj, Base) # True >>> isinstance(obj, Sub) # False >>> isinstance(sub_obj, Base) # True >>> isinstance(sub_obj, Sub) # True >>> type(sub_obj) == Base # False >>> type(sub_obj) # >>> type(sub_obj) == Sub # True >>> issubclass(type(sub_obj), Base) # True 

Общие приемы проверок.

>>> x = 1 >>> isinstance(x, int) # True >>> x = [1, 2, 3] >>> isinstance(x, list) # True >>> x = (1, 2, 3) >>> isinstance(x, tuple) # True # Проверим, является ли строка 'Hello' одним из типов, описанных в параметре type >>> isinstance('Hello', (float, int, str, list, dict, tuple)) # True # Проверка, на принадлежность к экземпляром myObj class myObj: name = "John" y = myObj() >>> isinstance(y, myObj) # True 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Функция abs(), абсолютное значение числа
  • Функция all(), все элементы True
  • Функция any(), хотя бы один элемент True
  • Функция ascii(), преобразует строку в ASCII
  • Функция bin(), число в двоичную строку
  • Класс bool(), логическое значение объекта
  • Функция breakpoint(), отладчик кода
  • Класс bytearray(), преобразует в массив байтов
  • Класс bytes(), преобразует в строку байтов
  • Функция callable(), проверяет можно ли вызвать объект
  • Функция chr(), число в символ Юникода
  • Класс classmethod, делает функцию методом класса
  • Функция compile() компилирует блок кода Python
  • Класс complex(), преобразует в комплексное число
  • Функция delattr(), удаляет атрибут объекта
  • Класс dict() создает словарь
  • Функция dir(), все атрибуты объекта
  • Функция divmod(), делит числа с остатком
  • Функция enumerate(), счетчик элементов последовательности
  • Функция eval(), выполняет строку-выражение с кодом
  • Функция exec(), выполняет блок кода
  • Функция filter(), фильтрует список по условию
  • Класс float(), преобразует в вещественное число
  • Функция format(), форматирует значение переменной
  • Класс frozenset(), преобразует в неизменяемое множество
  • Функция getattr(), значение атрибута по имени
  • Функция globals(), переменные глобальной области
  • Функция hasattr(), наличие атрибута объекта
  • Функция hash(), хэш-значение объекта
  • Функция help(), справка по любому объекту
  • Функция hex(), число в шестнадцатеричную строку
  • Функция id(), идентификатор объекта
  • Функция input(), ввод данных с клавиатуры
  • Класс int(), преобразует в тип int
  • Функция isinstance(), принадлежность экземпляра к классу
  • Функция issubclass(), проверяет наследование класса
  • Функция iter(), создает итератор
  • Функция len(), количество элементов объекта
  • Класс list(), преобразовывает в список
  • Функция locals(), переменные локальной области
  • Функция map(), обработка последовательности без цикла
  • Функция max(), максимальное значение элемента
  • Класс memoryview(), ссылка на буфер обмена
  • Функция min(), минимальное значение элемента
  • Функция next(), следующий элемент итератора
  • Класс object(), возвращает безликий объект
  • Функция oct(), число в восьмеричную строку
  • Функция open(), открывает файл на чтение/запись
  • Функция ord(), число символа Unicode
  • Функция pow(), возводит число в степень
  • Функция print(), печатает объект
  • Класс property(), метод класса как свойство
  • Класс range(), генерирует арифметические последовательности
  • Функция repr(), описание объекта
  • Функция reversed(), разворачивает последовательность
  • Функция round(), округляет число
  • Класс set(), создает или преобразовывает в множество
  • Функция setattr(), создает атрибут объекта
  • Класс slice(), шаблон среза
  • Функция sorted(), выполняет сортировку
  • Декоратор staticmethod(), метод класса в статический метод
  • Класс str(), преобразует объект в строку
  • Функция sum(), сумма последовательности
  • Функция super(), доступ к унаследованным методам
  • Класс tuple(), создает или преобразует в кортеж
  • Класс type(), возвращает тип объекта
  • Функция vars(), словарь переменных объекта
  • Функция zip(), объединить элементы в список кортежей
  • Функция __import__(), находит и импортирует модуль
  • Функция aiter(), создает асинхронный итератор
  • Функция anext(), следующий элемент асинхронного итератора

46) тип () и isinstance ()

В Python есть встроенная функция type (), которая помогает вам найти тип класса переменной, заданной в качестве входных данных. Например, если вход является строкой, вы получите вывод в виде , для списка это будет и т. Д.

Используя команду type (), вы можете передать один аргумент, и возвращаемое значение будет типом класса данного аргумента, например: type (object).

Также возможно передать три аргумента в type (), то есть type (name, base, dict), в таком случае он вернет вам объект нового типа.

В этом уроке вы узнаете:

  • Что такое type () в Python?
  • Синтаксис для типа ():
  • Пример типа ()
  • Пример: использование type () для объекта класса.
  • Пример: использование имени, оснований и dict в type ()
  • Что такое isinstance () в Python?
  • Синтаксис isinstance ():
  • Примеры isinstance ()
  • Разница между типом () и isinstance () в Python

Синтаксис для типа ():

type () может использоваться двумя способами, как показано ниже:

type(object) type(namr, bases, dict)

Параметры : тип (объект)

  • объект: это обязательный параметр. Если это только параметр, переданный в type (), он вернет вам тип параметра.

Параметры : тип (имя, основания, дикт)

  • имя: название класса.
  • Основы: (необязательно). Это необязательный параметр, и это базовый класс
  • dict: (необязательно). Это необязательный параметр, и это пространство имен, которое имеет определение класса.

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

Если объект является единственным параметром, переданным type (), он вернет вам тип объекта.

Если параметры, передаваемые типу, являются типом (объект, базы, dict), в таком случае он вернет объект нового типа.

Пример типа ()

В этом примере у нас есть строковое значение, число, значение с плавающей запятой, комплексное число, список, кортеж, dict и set. Мы будем использовать переменные с типом, чтобы увидеть выходные данные для каждой из них.

str_list = "Welcome to Guru99" age = 50 pi = 3.14 c_num = 3j+10 my_list = ["A", "B", "C", "D"] my_tuple = ("A", "B", "C", "D") my_dict = my_set = print("The type is : ",type(str_list)) print("The type is : ",type(age)) print("The type is : ",type(pi)) print("The type is : ",type(c_num)) print("The type is : ",type(my_list)) print("The type is : ",type(my_tuple)) print("The type is : ",type(my_dict)) print("The type is : ",type(my_set))

Вывод:

The type is : The type is : The type is : The type is : The type is : The type is : The type is : The type is :

Пример: использование type () для объекта класса.

Когда вы проверяете объект, созданный из класса, используя type (), он возвращает тип класса вместе с именем класса. В этом примере мы создадим класс и проверим тип объекта, созданный из теста класса.

class test: s = 'testing' t = test() print(type(t))

Вывод:

Пример: использование имени, оснований и dict в type ()

Тип также может быть вызван с использованием синтаксиса: тип (имя, базы, dict).

Три параметра, передаваемые в type (), т. Е. Name, base и dict, являются компонентами, составляющими определение класса. Имя представляет имя класса, base – это базовый класс, а dict – это словарь атрибутов базового класса.

В этом примере мы собираемся использовать все три параметра: имя, базы и dict в type ().

Пример:

class MyClass: x = 'Hello World' y = 50 t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50)) print(type(t1)) print(vars(t1))

Когда вы передаете все три аргумента в type (), это помогает вам инициализировать новый класс с атрибутами базового класса.

Что такое isinstance () в Python?

Python isinstance is part of python built-in functions. Python isinstance() takes in two arguments, and it returns true if the first argument is an instance of the classinfo given as the second argument.

Syntax isinstance()

isinstance(object, classtype)

Parameters

  • object: An object whose instance you are comparing with classtype. It will return true if the type matches otherwise false.
  • class type: A type or a class or a tuple of types and/or classes.

Return value:

It will return true if the object is an instance of classtype and false if not.

Examples of isinstance()

In this section, we will study various examples to learn isinstance()

Example : isinstance() Integer check

The code below compares integer value 51 with type int. It will return true it the type of 51 matches with int otherwise false.

age = isinstance(51,int) print("age is an integer:", age)
age is an integer: True

Example : isinstance() Float check

In this example we are going to compare the float value with type float i.e. 3.14 value will be compare with type float.

pi = isinstance(3.14,float) print("pi is a float:", pi)
pi is a float: True

Example: isinstance() String check

message = isinstance("Hello World",str) print("message is a string:", message)
message is a string: True

Example : isinstance() Tuple check

The code checks for a tuple (1,2,3,4,5) with type tuple. It will return true if the input given is of type tuple and false if not.

my_tuple = isinstance((1,2,3,4,5),tuple) print("my_tuple is a tuple:", my_tuple)
my_tuple is a tuple: True

Example : isinstance() Set check

Код проверяет набор ( с заданным типом. Он вернет истину, если заданный тип ввода задан, и ложь, если нет.

my_set = isinstance(,set) print("my_set is a set:", my_set)
my_set is a set: True

Пример: проверка списка isinstance ()

Код проверяет список [1,2,3,4,5] с типом list. Он вернет истину, если данный ввод имеет тип списка, и ложь, если нет.

my_list = isinstance([1,2,3,4,5],list) print("my_list is a list:", my_list)
my_list is a list: True

Пример: проверка isinstance ()

Код проверяет наличие dict () с типом dict. Он вернет true, если данный ввод имеет тип dict и false, если нет.

my_dict = isinstance(,dict) print("my_dict is a dict:", my_dict)
my_dict is a dict: True

Пример: тест isinstance () для класса

Код показывает проверку типа класса с помощью isinstance (). Объект класса сравнивается с именем класса внутри isinstance (). Возвращает true, если объект принадлежит классу, и false в противном случае.

class MyClass: _message = "Hello World" _class = MyClass() print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))
_class is a instance of MyClass() True

Разница между типом () и isinstance () в Python

class A: my_listA = [1,2,3] class B(A): my_listB = [1,2,3] print(type(A()) == A) print(type(B()) == A)
True False
class A: my_listA = [1,2,3] class B(A): my_listB = [1,2,3] print(isinstance(A(), A)) print(isinstance(B(), A))
True True

Резюме:

  • В Python есть встроенная функция type (), которая помогает вам найти тип класса переменной, заданной в качестве входных данных. Например, если вход является строкой, вы получите вывод в виде , для списка это будет и т. Д.
  • Для type () вы можете передать один аргумент, и возвращаемое значение будет типом класса данного аргумента, например, type (object).
  • Также возможно передать три аргумента в type (), то есть type (name, base, dict), в таком случае он вернет вам объект нового типа.
  • В Python есть встроенная функция instance (), которая сравнивает значение с указанным типом. Если данное значение и тип соответствуют, он вернет true, иначе false. Используя isinstance (), вы можете проверить строку, число с плавающей точкой, int, список, кортеж, dict, set, class и т. Д.
  • Используя метод isinstance (), вы можете проверить строку, число с плавающей точкой, int, список, кортеж, dict, set, class и т. Д.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *