Понимание type() и isinstance() в Python: практические примеры
Что такое type() в Python?
В Python есть встроенная функция type(), которая помогает найти тип класса переменной, переданной в качестве входа. Например, если вход — строка, вывод будет <class 'str'>, для списка — <class 'list'> и так далее.
Используя type(), можно передать один аргумент, и возвращаемое значение будет типом класса переданного аргумента, пример: type(object).
Также возможно передать три аргумента в type(), то есть type(name, bases, dict), в таком случае будет возвращён новый объект типа.
В этом уроке вы узнаете:
- Что такое type() в Python?
- Синтаксис для type()
- Пример type()
- Пример: использование type() для объекта класса.
- Пример: использование name, bases и dict в type()
- Что такое isinstance() в Python?
- Синтаксис isinstance()
- Примеры isinstance()
- Разница между type() и isinstance() в Python
Синтаксис для type():
type() можно использовать двумя способами, как показано ниже:
type(object) type(name, bases, dict)
Параметры: type(object)
- object: обязательный параметр. Если это единственный параметр, переданный в type(), он вернёт тип параметра.
Параметры: type(name, bases, dict)
- name: имя класса.
- bases: (опционально). Базовый класс.
- dict: (опционально). Пространство имён с определением класса.
Возвращаемое значение:
Если object — единственный параметр, переданный в type(), вернётся тип объекта.
Если переданы параметры type(name, bases, dict), вернётся новый объект типа.
Пример type()
В этом примере у нас есть строковое значение, число, float, комплексное число, список, кортеж, словарь и множество. Мы используем переменные с type, чтобы увидеть вывод для каждого.
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 = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}
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(), он возвращает тип класса вместе с именем класса. В этом примере мы создадим класс и проверим тип объекта, созданного из класса test.
class test:
s = 'testing'
t = test()
print(type(t))
Вывод:
Пример: использование name, bases и dict в type()
type также можно вызвать с синтаксисом: type(name, bases, dict).
Три параметра, переданные в type() — name, bases и dict — являются компонентами, составляющими определение класса. name представляет имя класса, bases — базовый класс, а dict — словарь атрибутов базового класса.
В этом примере мы используем все три параметра: name, bases и 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))
Вывод:
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}
Когда вы передаёте все три аргумента в type(), это помогает инициализировать новый класс с атрибутами базового класса.
Что такое isinstance() в Python?
Python isinstance — часть встроенных функций Python. Функция isinstance() принимает два аргумента и возвращает true, если первый аргумент является экземпляром classinfo, заданного вторым аргументом.
Синтаксис isinstance()
isinstance(object, classtype)
Параметры
- object: объект, чей экземпляр вы сравниваете с classtype. Вернёт true, если тип совпадает, иначе false.
- class type: тип или класс или кортеж типов и/или классов.
Возвращаемое значение:
Вернёт true, если объект является экземпляром classtype, и false, если нет.
Примеры isinstance()
Пример: isinstance() проверка целого числа
Код ниже сравнивает целое значение 51 с типом int. Вернёт true, если тип 51 совпадает с int, иначе false.
age = isinstance(51, int)
print("age is an integer:", age)
Вывод:
age is an integer: True
Пример: isinstance() проверка float
В этом примере сравниваем float значение с типом float, то есть 3.14 сравнивается с типом float.
pi = isinstance(3.14, float)
print("pi is a float:", pi)
Вывод:
pi is a float: True
Пример: isinstance() проверка строки
message = isinstance("Hello World", str)
print("message is a string:", message)
Вывод:
message is a string: True
Пример: isinstance() проверка кортежа
Код проверяет кортеж (1,2,3,4,5) с типом tuple. Вернёт true, если вход заданного типа tuple, и false, если нет.
my_tuple = isinstance((1,2,3,4,5), tuple)
print("my_tuple is a tuple:", my_tuple)
Вывод:
my_tuple is a tuple: True
Пример: isinstance() проверка множества
Код проверяет множество ({1,2,3,4,5}) с типом set. Вернёт true, если вход типа set, и false, если нет.
my_set = isinstance({1,2,3,4,5}, set)
print("my_set is a set:", my_set)
Вывод:
my_set is a set: True
Пример: isinstance() проверка списка
Код проверяет список [1,2,3,4,5] с типом list. Вернёт true, если вход типа list, и false, если нет.
my_list = isinstance([1,2,3,4,5], list)
print("my_list is a list:", my_list)
Вывод:
my_list is a list: True
Пример: isinstance() проверка словаря
Код проверяет словарь ({"A":"a", "B":"b", "C":"c", "D":"d"}) с типом dict. Вернёт true, если вход типа dict, и false, если нет.
my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"}, 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
Разница между type() и isinstance() в Python
| type() | isinstance() |
|---|---|
| Встроенная функция type() помогает найти тип класса переменной, переданной как вход. | Встроенная функция isinstance() сравнивает значение с заданным типом. Если значение и тип совпадают, вернёт true, иначе false. |
| Возвращаемое значение — объект типа | Возвращаемое значение — Boolean (true или false) |
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 В случае type проверка подкласса даёт 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 isinstance() даёт truthy значение при проверке с подклассом. |
Резюме:
- Python имеет встроенную функцию type(), помогающую найти тип класса переменной, переданной как вход. Например, если вход — строка, вывод будет
<class 'str'>, для списка —<class 'list'>и т.д. - Для type() можно передать один аргумент, и возвращаемое значение будет типом класса переданного аргумента, например, type(object).
- Также возможно передать три аргумента в type(), то есть type(name, bases, dict), в таком случае вернётся новый объект типа.
- Python имеет встроенную функцию isinstance(), сравнивающую значение с заданным типом. Если значение и тип совпадают, вернёт true, иначе false. С isinstance() можно тестировать строку, float, int, список, кортеж, словарь, множество, класс и т.д.
- Используя isinstance(), можно тестировать строку, float, int, список, кортеж, словарь, множество, класс и т.д.
Python
- Выражения, операторы и блоки в C#: подробное руководство с примерами
- Мастерство преобразования типов в Python: Полное руководство
- Числа, преобразование типов и математика в Python: полное руководство
- Создание робота на Raspberry Pi и Python: полное руководство
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры
- Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики