8.15. types – Имена для встроенных типов¶types – Names for built-in types
Исходный код: Lib/types.py
В этом модуле определены имена для некоторых типов объектов, используемых стандартным интерпретатором Python, но не для типов, определяемых различными модулями расширения. Кроме того, он не включает некоторые типы, возникающие во время обработки, такие как тип listiterator. Использовать from types import * безопасно – модуль не экспортирует никаких имен, кроме перечисленных здесь. Новые имена, которые будут экспортированы в будущих версиях этого модуля, будут оканчиваться на Type.
Обычно используется для функций, которые выполняют разные действия в зависимости от типов аргументов, например:
from types import *
def delete(mylist, item):
if type(item) is IntType:
del mylist[item]
else:
mylist.remove(item)
Начиная с Python 2.2, встроенные функции-фабрики, такие как int() и str(), также являются именами соответствующих типов. Теперь это предпочтительный способ доступа к типу вместо использования модуля types. Соответственно, приведённый выше пример следует записывать следующим образом:
def delete(mylist, item):
if isinstance(item, int):
del mylist[item]
else:
mylist.remove(item)
Модуль определяет следующие имена:
-
types.NoneType¶ Тип
None.
-
types.ComplexType¶ Тип комплексных чисел (например,
1.0j). Не определен, если Python был собран без поддержки комплексных чисел.
-
types.UnicodeType¶ Тип строк Unicode (например,
u'Spam'). Не определен, если Python был собран без поддержки Unicode. Это псевдоним встроенногоunicode.
-
types.ListType¶ Тип списков (например,
[0, 1, 2, 3]); псевдоним встроенногоlist.
-
types.DictionaryType¶ Альтернативное имя для
DictType.
-
types.FunctionType¶ -
types.LambdaType¶ Тип пользовательских функций и функций, созданных выражениями
lambda.
-
types.GeneratorType¶ Тип объектов-итераторов generator, создаваемых вызовом генераторной функции.
Новое в версии 2.2.
-
types.ClassType¶ Тип пользовательских классов старого стиля.
-
types.InstanceType¶ Тип экземпляров пользовательских классов старого стиля.
-
types.MethodType¶ Тип методов экземпляров пользовательских классов.
-
types.UnboundMethodType¶ Альтернативное имя для
MethodType.
-
types.BuiltinFunctionType¶ -
types.BuiltinMethodType¶ Тип встроенных функций, таких как
len()илиsys.exit(), и методов встроенных классов. (Здесь термин «встроенный» означает «написанный на C».)
-
types.ModuleType¶ Тип модулей.
-
types.EllipsisType¶ Тип
Ellipsis.
-
types.TracebackType¶ Тип объектов traceback, таких как в
sys.exc_traceback.
-
types.FrameType¶ Тип объектов фреймов, которые можно найти в
tb.tb_frame, еслиtbявляется объектом traceback.
-
types.DictProxyType¶ Тип прокси-словарей, таких как
TypeType.__dict__.
-
types.NotImplementedType¶ Тип
NotImplemented
-
types.GetSetDescriptorType¶ Тип объектов, определенных в модулях расширения с помощью
PyGetSetDef, таких какFrameType.f_localsилиarray.array.typecode. Этот тип используется в качестве дескриптора атрибутов объектов; он имеет то же назначение, что и типproperty, но для классов, определенных в модулях расширения.Новое в версии 2.5.
-
types.MemberDescriptorType¶ Тип объектов, определённых в модулях расширения с помощью
PyMemberDef, таких какdatetime.timedelta.days. Этот тип используется как дескриптор для простых элементов данных C, которые используют стандартные функции преобразования; он имеет то же назначение, что и типproperty, но для классов, определённых в модулях расширения.Особенность реализации CPython: В других реализациях Python этот тип может быть идентичен
GetSetDescriptorType.Новое в версии 2.5.
-
types.StringTypes¶ Последовательность, содержащая
StringTypeиUnicodeType, используемая для упрощения проверки любого строкового объекта. Использование этого более переносимо, чем использование последовательности двух строковых типов, созданной в другом месте, поскольку она содержитUnicodeTypeтолько в том случае, если он был встроен в работающую версию Python. Например:isinstance(s, types.StringTypes).Новое в версии 2.2.