type()

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

Сигнатура

type(object)
type(name, bases, dict)

Параметры:

  • object — любой объект (форма с одним аргументом).

  • name — строка с именем нового класса.

  • bases — кортеж базовых классов.

  • dict — словарь атрибутов и методов нового класса.

Возвращает: объект-тип (или новый класс).

Примеры

Определение типа:

print(type(42))
print(type(3.14))
print(type("hi"))
print(type([1, 2]))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'list'>

Точное сравнение типов (без учёта наследования):

class Robot:
    pass

class Phobo(Robot):
    pass

r = Phobo()
print(type(r) is Phobo)
print(type(r) is Robot)
print(isinstance(r, Robot))
True
False
True

Динамическое создание класса:

def greet(self):
    return f"Привет, {self.name}!"

User = type("User", (object,), {"name": "гость", "greet": greet})
u = User()
print(u.greet())
Привет, гость!

Группировка объектов по типу:

items = [1, "a", 2.5, "b", 3, 4.0]
groups = {}
for x in items:
    groups.setdefault(type(x).__name__, []).append(x)
print(groups)
{'int': [1, 3], 'str': ['a', 'b'], 'float': [2.5, 4.0]}

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.