type() и isinstance() в Python с примерами

⚡ Умное резюме

Python Функции type() и isinstance() являются встроенными функциями для проверки класса объекта. Функция type() возвращает точный тип, а функция isinstance() проверяет, принадлежит ли объект классу или кортежу классов. Обе функции показаны здесь на примерах.

  • 🔍 тип(): Возвращает точный класс объекта, например, str, int или list.
  • isinstance(): Проверяет, является ли объект экземпляром заданного класса, и возвращает True или False.
  • 🧩 Функция type() с тремя аргументами: Функция `type(name, bases, dict)` динамически создает совершенно новый объект класса.
  • ???? Подклассы: Метод isinstance() возвращает True для подклассов; метод type() проверяет только точный класс.
  • 🎯 Случаи применения: Проверяйте типы входных данных, отлаживайте переменные и выполняйте логику ветвления в зависимости от типа объекта.
  • 🤖 Помощь ИИ: Инструменты искусственного интеллекта, такие как Copilot, генерируют проверки типа (type()) и состояния экземпляра (isinstance()) по запросу.

type() и isinstance() в Python

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

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

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

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

Синтаксис типа()

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

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

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

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

Параметры: тип(имя, базы, дикт)

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

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

Если объект является единственным параметром, передаваемым в 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 = {"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 :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

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

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

class test:
    s = 'testing'

t = test()
print(type(t))

Выход:

<class '__main__.test'>

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

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

Три параметра, передаваемые в type(), т.е. name, bases и dict, являются компонентами, составляющими определение класса. Имя представляет имя класса, bases — базовый класс, а 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))

Выход:

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

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

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

Python isinstance является частью встроенные функции Python. Python isinstance() принимает два аргумента и возвращает true, если первый аргумент является экземпляром информации о классе, заданной в качестве второго аргумента.

Синтаксис isinstance()

isinstance(object, classtype)

Параметры

  • объект: объект, экземпляр которого вы сравниваете с типом класса. Он вернет true, если тип соответствует, в противном случае — false.
  • Тип класса: тип, класс или кортеж типов и/или классов.

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

Он вернет true, если объект является экземпляром classtype, и false, если нет.

Примеры isinstance()

В этом разделе мы изучим различные примеры, чтобы изучить 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, т.е. значение 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) типа кортеж. Он вернет true, если введенные данные имеют тип кортежа, и 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} с установленным типом. Он вернет 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] со списком типов. Он вернет true, если введенные данные имеют список типов, и false, если нет.

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

Выход:

my_list is a list: True

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

Код проверяет наличие dict({"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

тип() isinstance ()
Python имеет встроенную функцию type(), которая помогает вам найти тип класса переменной, заданной в качестве входных данных. Python имеет встроенную функцию isinstance(), которая сравнивает значение с указанным типом. Если значение и указанный тип совпадают, она вернет 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

В случае типа проверка подкласса возвращает 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() дает истинное значение при проверке с подклассом.

Часто задаваемые вопросы (FAQ)

Функция `type()` — это встроенная функция, которая возвращает класс объекта. При передаче одного аргумента она задаёт тип объекта; при передаче трёх (имя, базовые типы, словарь) она создаёт новый класс.

Функция `isinstance(object, classtype)` проверяет, является ли объект экземпляром класса или кортежем классов. Она возвращает `True`, если тип совпадает, и `False` в противном случае.

Метод `type()` возвращает точный класс объекта и игнорирует наследование, в то время как `isinstance()` возвращает `True` и для подклассов. Используйте `isinstance()` для гибкой проверки типов, учитывающей иерархию классов.

Да. Вызов функции type(name, bases, dict) с тремя аргументами динамически возвращает новый объект класса. name — это имя класса, bases — кортеж родителей, а dict содержит атрибуты.

Да. Метод isinstance() возвращает True, если объект является экземпляром класса или любого из его подклассов. Это делает его более безопасным, чем type(), для проверки унаследованных типов.

Искусственный интеллект, используемый в GitHub Copilot, автоматически дополняет проверки типов (type()) и экземпляров (isinstance()), генерирует проверки валидации и предлагает правильный подход к заданному объекту по мере написания кода. Python.

Да. Инструменты на основе ИИ могут автоматизировать вставку проверок isinstance(), обнаруживать непроверенные входные данные и преобразовывать ненадежные сравнения типов в более безопасные проверки isinstance() во всей вашей кодовой базе.

Метод `type()` возвращает объект класса для значения: `list` для списка и `dict` для словаря. При выводе на экран отображается форма, похожая на список классов или словарь классов.

Подведем итог этой публикации следующим образом: