type()
метод возвращает тип класса аргумента(объекта), переданного в качестве параметра. функция type() в основном используется для отладки.
В функцию type() можно передать два различных типа аргументов: один и три аргумента. Если передается один аргумент type(obj)
, он возвращает тип данного объекта. Если передается три аргумента type(name, bases, dict)
, он возвращает объект нового типа.
Синтаксис :
type(object)
type(name, bases, dict)
Параметры :
name (имя): имя класса, которое позже соответствует атрибуту __name__ класса.
bases (основы): кортеж классов, из которого происходит текущий класс. Позже соответствует атрибуту the __bases__ attribute.
dict (дикт): словарь, содержащий пространства имен для класса. Позже соответствует атрибуту __dict__.
Тип возврата:
возвращает новый класс типа или, по сути, метакласс.
Код № 1:
# Python3 simple code to explain
# the type() function
print(type([]) is list)
print(type([]) is not list)
print(type(()) is tuple)
print(type({}) is dict)
print(type({}) is not list)
Выход:
True False True True True
Код № 2:
# Python3 code to explain
# the type() function
# Class of type dict
class DictType:
DictNumber = {1:'John', 2:'Wick',
3:'Barry', 4:'Allen'}
# Will print the object type
# of existing class
print(type(DictNumber))
# Class of type list
class ListType:
ListNumber = [1, 2, 3, 4, 5]
# Will print the object type
# of existing class
print(type(ListNumber))
# Class of type tuple
class TupleType:
TupleNumber = ('Geeks', 'for', 'geeks')
# Will print the object type
# of existing class
print(type(TupleNumber))
# Creating object of each class
d = DictType()
l = ListType()
t = TupleType()
Выход:
<class 'dict'>
<class 'list'>
<class 'tuple'>
Код № 3:
# Python3 code to explain
# the type() function
# Class of type dict
class DictType:
DictNumber = {1:'John', 2:'Wick', 3:'Barry', 4:'Allen'}
# Class of type list
class ListType:
ListNumber = [1, 2, 3, 4, 5]
# Creating object of each class
d = DictType()
l = ListType()
# Will print accordingly whether both
# the objects are of same type or not
if type(d) is not type(l):
print("Both class have different object type.")
else:
print("Same Object type")
Выход:
Оба класса имеют разные типы объектов.
Код № 4: Использование type(name, bases, dict)
# Python3 program to demonstrate
# type(name, bases, dict)
# New class(has no base) class with the
# dynamic class initialization of type()
new = type('New', (object, ),
dict(var1 ='GeeksforGeeks', b = 2009))
# Print type() which returns class 'type'
print(type(new))
print(vars(new))
# Base class, incorporated
# in our new class
class test:
a = "Geeksforgeeks"
b = 2009
# Dynamically initialize Newer class
# It will derive from the base class test
newer = type('Newer', (test, ),
dict(a ='Geeks', b = 2018))
print(type(newer))
print(vars(newer))
Выход:
{'__module__': '__main__', 'var1': 'GeeksforGeeks', '__weakref__': , 'b': 2009, '__dict__': , '__doc__': None}
{'b': 2018, '__doc__': None, '__module__': '__main__', 'a': 'Geeks'}
Приложения :
- функция type() в основном используется в целях отладки. При использовании других строковых функций, таких как .upper (),. lower (),. split (), с текстом, извлеченным из веб-обходчика, это может не сработать, поскольку они могут быть другого типа, который не поддерживает строковые функции. И в результате он будет продолжать выдавать ошибки, которые очень трудно отлаживать [Рассматривайте ошибку как : GeneratorType не имеет атрибута lower()] . функция type() может быть использована в этот момент для определения типа извлеченного текста, а затем изменить его на другие формы строки, прежде чем мы будем использовать строковые функции или любые другие операции с ним.
- type() с тремя аргументами может использоваться для динамической инициализации классов или существующих классов с атрибутами. Он также используется для регистрации таблиц базы данных с помощью SQL.