type

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

Синтаксис

type(object)

type(name, bases, dict)

Аргументы

  1. object (при одном аргументе):
    • Что означает: Объект, тип которого нужно узнать.
    • Возможные значения: Любой объект.
  2. 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

Частые ошибки

  1. Использование type для проверки типов вместо isinstance:

    if type(42) == int:  # Это работает, но предпочтительнее использовать isinstance
        print("Это int")
    

    Как исправить: Используйте isinstance(42, int) для проверки типа.

Часто задаваемые вопросы

  1. В чём разница между type() и isinstance()? type() возвращает точный тип объекта, а isinstance() проверяет принадлежность объекта к типу или его подклассу.
  2. Можно ли использовать type() для создания классов? Да, при передаче трёх аргументов type создаёт новый класс.