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.