Давайте рассмотрим несколько примеров:
>>> type(int)
<class 'type'>
Итак, поскольку type(int)
возвращает type
, имеет смысл, что
>>> type(int)(12)
<class 'int'>
поскольку
>>> type(12)
<class 'int'>
Что еще более важно:
>>> (type(int)(12) == type(12)) and (type(int)(12) is type(12))
True
Теперь, если вы вместо этого сделаете:
>>> type(int())
<class 'int'>
что также ожидается, поскольку
>>> (int() == 0) and (int() is 0)
True
и
>>> (type(int()) = type(0)) and (type(int()) is type(0))
True
Итак, собираем вещи:
int
является объектом типа type
int()
— это (целочисленный) объект типа int
Другой пример:
>>> type(str())
<class 'str'>
что обозначает
>>> (type(str())() == '') and (type(str())() is '')
True
поэтому он ведет себя как строковый объект:
>>> type(str())().join(['Hello', ', World!'])
'Hello, World!'
У меня такое чувство, что я мог сделать это намного сложнее, чем оно есть на самом деле... это не так!
type()
возвращает класс объекта. Так:
type(12)
- это просто уродливый способ написать int
type(12)(12)
- это просто уродливый способ написать int(12)
Итак, «Да!», type()
возвращает вызываемый объект. Но гораздо лучше думать об этом как (из официальной документации)
класс тип(объект)
С одним аргументом вернуть тип объекта. Возвращаемое значение представляет собой объект типа и, как правило, тот же объект, что и объект, возвращаемый object.__class__.
person
tpvasconcelos
schedule
03.05.2017
type
возвращает объект типа. Типовые объекты являются вызываемыми. - person vaultah   schedule 04.05.2017type(__builtins__)
отображает<type 'module'>
на стандартном выходе и возвращает вызываемый объект? - person overexchange   schedule 04.05.2017<type 'module'>
являетсяrepr
объекта типаmodule
. - person juanpa.arrivillaga   schedule 04.05.2017('my_module')
к объекту, если он имеет типfunction
.type(__builtins__)
возвращает какую-то функцию? - person overexchange   schedule 04.05.2017type(__builtins__)
возвращает объект типа, который можно вызывать как функцию. - person juanpa.arrivillaga   schedule 04.05.2017my_module = type(__builtins__)('my_module')
. Объектmy_module
, который вы создаете таким образом, не будет очень полезен... - person juanpa.arrivillaga   schedule 04.05.2017