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(), тогава той ще ви върне типа на обекта.
Ако параметрите, предадени на 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 е речникът на атрибутите на базовия клас.
В този пример ще използваме и трите параметъра, т.е. име, бази и 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, ако първият аргумент е екземпляр на classinfo, даден като втори аргумент.
Синтаксис isinstance()
isinstance(object, classtype)
параметри
- обект: Обект, чийто екземпляр сравнявате с 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, ако въведените данни са от тип 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}, с набор от типове. Той ще върне 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, ако въведените данни са от тип 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(), която сравнява стойността с дадения тип. Ако дадената стойност и тип съвпадат, ще върне 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() дава вярна стойност, когато се проверява с подклас. |
Oбобщение
- Python има вградена функция, наречена type(), която ви помага да намерите типа на класа на променливата, дадена като вход. Например, ако входът е низ, ще получите изхода като , за списъка, ще бъде и т.н.
- За type() можете да подадете единичен аргумент и върнатата стойност ще бъде типът на класа на дадения аргумент, например type(object).
- Също така е възможно да подадете три аргумента към type(), т.е. type(name, bases, dict), в такъв случай той ще ви върне нов тип обект.
- Python има вградена функция, наречена instance(), която сравнява стойността с дадения тип. Ако дадената стойност и тип съвпадат, ще върне истина, в противен случай невярно. Използвайки isinstance(), можете да тествате за низ, float, int, list, tuple, dict, set, class и т.н.
- С помощта на метода isinstance() можете да тествате за низ, float, int, list, tuple, dict, set, class и т.н.
