type() і isinstance() в Python з прикладами

Що таке type(). Python?

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

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

Також можна передати три аргументи в type(), тобто type(name, bases, dict), у такому випадку він поверне вам новий об’єкт типу.

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

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

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

параметри: тип (об'єкт)

  • об'єкт: це обов'язковий параметр. Якщо це лише параметр, переданий у type(), він поверне вам тип параметра.

параметри: тип (назва, основи, dict)

  • ім'я:назва класу.
  • основи: (за бажанням). Це необов'язковий параметр, і це базовий клас
  • dict: (необов'язково). Це необов’язковий параметр, і це простір імен, який містить визначення класу.

значення, що повертається

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

Якщо параметри, передані типу, є типом (об’єкт, бази, dict), у такому випадку він поверне новий тип об’єкта.

Приклад type()

У цьому прикладі ми маємо рядкове значення, число, значення з плаваючою точкою, комплексне число, список, кортеж, dict і набір. Ми будемо використовувати змінні з типом, щоб побачити результат для кожної з них.

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 — словник атрибутів базового класу.

У цьому прикладі ми збираємося використовувати всі три параметри, тобто 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))

вихід:

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

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

Що таке isinstance(). Python?

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

Синтаксис 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

У цьому прикладі ми будемо порівнювати значення 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, якщо наданий вхід має тип кортежу, і 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, якщо введені дані мають набір типу, і значення 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

Приклад: перевірка 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(), яка порівнює значення з заданим типом. Якщо задане значення та тип збігаються, воно поверне істину, інакше – хибність.
Значення, що повертається, є об’єктом типу Значення, що повертається, є логічним, тобто істинним або хибним.
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() дає правдиве значення при перевірці підкласом.

Підсумки

  • Python має вбудовану функцію під назвою type(), яка допомагає вам знайти тип класу змінної, наданої як вхід. Наприклад, якщо введенням є рядок, ви отримаєте вихід як , для списку, буде і т.д.
  • Для type() ви можете передати один аргумент, а повернуте значення буде типом класу наданого аргументу, наприклад, type(object).
  • Також можна передати три аргументи в type(), тобто type(name, bases, dict), у такому випадку він поверне вам новий об’єкт типу.
  • Python має вбудовану функцію під назвою instance(), яка порівнює значення з заданим типом. Якщо надані значення та тип збігаються, він поверне істину, інакше хибність. Використовуючи isinstance(), ви можете перевірити рядок, float, int, список, кортеж, dict, набір, клас тощо.
  • Використовуючи метод isinstance(), ви можете перевірити рядок, float, int, список, кортеж, dict, набір, клас тощо.