Основополагающий тип. Конструктор для динамических пользовательских типов.
type(obj) / type(name, bases, dict)
Один аргумент:
obj -- Объект, тип которого требуется определить.

Три аргумента:
name -- Имя для создаваемого типа (становится атрибутом '__name__');
bases -- Кортеж с родительскими классами (становится атрибутом '__bases__');
dict -- Словарь, который будет являться пространством имён для тела класса (становится атрибутом '__dict__').

Типы данных определяют способности своих объектов (аспекты поведения) и возможные значения для них.

Способности — это операции, которые поддерживает объект (например, может ли объект быть умножен на другой объект) и свойства объекта (например, есть у объекта длина, является ли он изменяемым).

На заметку
Важно понимать, что тип, как и другие сущности в Python, тоже является объектом.

type(object)  # <class 'type'>
type(type) # <class 'type'>
type(int) # <class 'type'>
type(57) # <class 'int'>

class MyClass(object): pass
type(MyClass) # <class 'type'>
type(MyClass()) # <class '__main__.MyClass'>

isinstance(object, object) # True
isinstance(type, object) # True

  • type — это тип всех типов (для, которых не указан явно иной метакласс);
  • тип object — это база для остальных типов.

Встроенные типы перечислены в модуле types.

Пользовательские типы данных могут быть сконструированы налету (во время исполнения) при помощи вызова type() (с тремя аргументами) или определены в коде, например при помощи инструкции class.

Понятия класс и тип по сути являются синонимами, начиная с +py2.3 (см. описание в object).

Вызов type


1. Вызов type() с одним аргументом позволяет получить тип указанного [аргументом] объекта (обычно возвращается тот же тип, что хранится в атрибуте объекта __class__). Однако для проверки соответствия типа объекта какому-либо типу (или нескольким) рекомендуется воспользоваться функцией isinstance(), ввиду того, что она принимает во внимание иерархию типов.

    my_var = 1
type(my_var) # <type 'int'>

2. +py2.2 Вызов type() с тремя аргументами позволяет сконструировать новый объект типа во время исполнения.

    # Определение типа при помощи инструкции class
class MyType: # Для Python 2 - MyType(object)
a = 1

# То же определение типа, но во время исполнения при помощи type()
MyType = type('MyType', (object,), {'a': 1})

Синонимы поиска: классы, типы, istype, typeOf
  • pynista
    03 May 19:33
     Почему тип type базовый тип, а не object?
    Почему если тип type "Базовый тип. Прародитель других встроенных и пользовательских типов данных. Конструктор для динамических пользовательских типов", мы получаем такой результат:

    >>> issubclass(type, object)
    True
    >>> issubclass(object, type)
    False
    >>>

    ?
    Получается, именно object, а не type является базовым типом?
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.