type
это тип. Это метакласс других встроенных типов (включая самого себя)
>>> type(int)
<class 'type'>
>>> type(type)
<class 'type'>
, а также метакласс по умолчанию для пользовательских типов:
>>> class A: pass
...
>>> type(A)
<class 'type'>
При вызове с одним аргументом (как в предыдущих примерах) возвращает тип своего аргумента. При вызове с тремя аргументами (имя, кортеж базовых классов и dict
) он возвращает новый экземпляр type
, как и следовало ожидать при вызове типа.
>>> B = type('B', (A,), {'x': 3})
>>> type(B)
<class 'type'>
>>> B.x
3
Фактически, оператор class
является декларативным синтаксисом для вызова type
. Предыдущее эквивалентно
class B(A):
x = 3