type
Функция type() возвращает тип объекта или создаёт новый объект типа. Используется для проверки типа переменной или для динамического создания классов.
Синтаксис
type(object)
type(name, bases, dict)
Аргументы
- object (при одном аргументе):
- Что означает: Объект, тип которого нужно узнать.
- Возможные значения: Любой объект.
- name, bases, dict (при трёх аргументах):
- Что означает: Создание нового класса.
- Возможные значения:
- name: Имя класса (строка).
- bases: Кортеж базовых классов.
- dict: Словарь с атрибутами и методами.
Возвращаемое значение
При одном аргументе возвращает тип объекта. При трёх аргументах возвращает новый класс.
Примеры использования
# Пример с одним аргументом
print(type(42)) # Вывод: <class 'int'>
print(type("hello")) # Вывод: <class 'str'>
# Пример с тремя аргументами
MyClass = type("MyClass", (object,), {"attr": 42})
obj = MyClass()
print(obj.attr) # Вывод: 42
Частые ошибки
Использование type для проверки типов вместо isinstance:
if type(42) == int: # Это работает, но предпочтительнее использовать isinstance print("Это int")
Как исправить: Используйте isinstance(42, int) для проверки типа.
Часто задаваемые вопросы
- В чём разница между type() и isinstance()? type() возвращает точный тип объекта, а isinstance() проверяет принадлежность объекта к типу или его подклассу.
- Можно ли использовать type() для создания классов? Да, при передаче трёх аргументов type создаёт новый класс.