You are currently viewing Функция type() в Python

Функция type() в Python

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.