Документация Python неофициальный перевод

object.md

572 строк · 30.6 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.6/c-api/object.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол объектов89**int `PyObject_Print`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, FILE *\*fp*, int *flags*)**1011Выводит объект1213*o*1415в файл1617*fp*1819. Возвращает2021`-1`2223в случае ошибки. Аргумент flags используется для включения определённых опций вывода. Единственная поддерживаемая в настоящее время опция –2425`Py_PRINT_RAW`2627; если она указана, выводится2829[`str()`](https://python-all.ru/2.6/library/functions.html#str)3031объекта вместо3233[`repr()`](https://python-all.ru/2.6/library/functions.html#repr)3435.3637**int `PyObject_HasAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*attr\_name*)**3839Возвращает4041`1`4243, если4445*o*4647имеет атрибут4849*attr\_name*5051, и5253`0`5455в противном случае. Это эквивалентно выражению Python5657`hasattr(o, attr_name)`5859. Эта функция всегда завершается успешно.6061**int `PyObject_HasAttrString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**6263Возвращает6465`1`6667, если6869*o*7071имеет атрибут7273*attr\_name*7475, и7677`0`7879в противном случае. Это эквивалентно выражению Python8081`hasattr(o, attr_name)`8283. Эта функция всегда завершается успешно.8485**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_GetAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*attr\_name*)**8687*Возвращаемое значение: новая ссылка.*8889Извлекает атрибут с именем *attr\_name* из объекта *o*. Возвращает значение атрибута при успехе или *NULL* при неудаче. Это эквивалент выражения Python `o.attr_name`.9091**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_GetAttrString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**9293*Возвращаемое значение: новая ссылка.*9495Извлекает атрибут с именем *attr\_name* из объекта *o*. Возвращает значение атрибута при успехе или *NULL* при неудаче. Это эквивалент выражения Python `o.attr_name`.9697**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_GenericGetAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*name*)**9899Обобщённая функция получения атрибута, предназначенная для размещения в слот100101`tp_getattro`102103объекта типа. Она ищет дескриптор в словаре классов в MRO объекта, а также атрибут в104105`__dict__`106107объекта (если он присутствует). Как описано в108109[*Implementing Descriptors*](https://python-all.ru/2.6/reference/datamodel.html#descriptors)110111, дескрипторы данных имеют приоритет над атрибутами экземпляра, а дескрипторы без данных – нет. В противном случае возбуждается112113[`AttributeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.AttributeError)114115.116117**int `PyObject_SetAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*attr\_name*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*v*)**118119Устанавливает значение атрибута с именем120121*attr\_name*122123для объекта124125*o*126127равным128129*v*130131. Возвращает132133`-1`134135при неудаче. Это эквивалент оператора Python136137`o.attr_name = v`138139.140141**int `PyObject_SetAttrString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*v*)**142143Устанавливает значение атрибута с именем144145*attr\_name*146147для объекта148149*o*150151равным152153*v*154155. Возвращает156157`-1`158159при неудаче. Это эквивалент оператора Python160161`o.attr_name = v`162163.164165**int `PyObject_GenericSetAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*name*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*value*)**166167Обобщённая функция установки атрибута, предназначенная для размещения в слот168169`tp_setattro`170171объекта типа. Она ищет дескриптор данных в словаре классов в MRO объекта, и если найден, то имеет приоритет над установкой атрибута в словаре экземпляра. В противном случае, атрибут устанавливается в172173`__dict__`174175объекта (если он присутствует). Иначе возбуждается176177[`AttributeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.AttributeError)178179и возвращается180181`-1`182183.184185**int `PyObject_DelAttr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*attr\_name*)**186187Удаляет атрибут с именем188189*attr\_name*190191для объекта192193*o*194195. Возвращает196197`-1`198199при неудаче. Это эквивалент оператора Python200201`del o.attr_name`202203.204205**int `PyObject_DelAttrString`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**206207Удаляет атрибут с именем208209*attr\_name*210211для объекта212213*o*214215. Возвращает216217`-1`218219при неудаче. Это эквивалент оператора Python220221`del o.attr_name`222223.224225**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_RichCompare`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o2*, int *opid*)**226227*Возвращаемое значение: новая ссылка.*228229Сравнивает значения *o1* и *o2* с помощью операции, заданной *opid*, которая должна быть одной из `Py_LT`, `Py_LE`, `Py_EQ`, `Py_NE`, `Py_GT` или `Py_GE`, что соответствует `<`, `<=`, `==`, `!=`, `>` или `>=` соответственно. Это эквивалент выражения Python `o1 op o2`, где `op` – оператор, соответствующий *opid*. Возвращает результат сравнения в случае успеха или *NULL* при ошибке.230231**int `PyObject_RichCompareBool`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o2*, int *opid*)**232233Сравнивает значения234235*o1*236237и238239*o2*240241с помощью операции, заданной242243*opid*244245, которая должна быть одной из246247`Py_LT`248249,250251`Py_LE`252253,254255`Py_EQ`256257,258259`Py_NE`260261,262263`Py_GT`264265или266267`Py_GE`268269, что соответствует270271`<`272273,274275`<=`276277,278279`==`280281,282283`!=`284285,286287`>`288289или290291`>=`292293соответственно. Возвращает294295`-1`296297при ошибке,298299`0`300301если результат ложный,302303`1`304305в противном случае. Это эквивалент выражения Python306307`o1 op o2`308309, где310311`op`312313– оператор, соответствующий314315*opid*316317.318319**int `PyObject_Cmp`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o2*, int *\*result*)**320321Сравнивает значения *o1* и *o2* с помощью процедуры, предоставленной *o1*, если таковая существует, иначе – процедурой от *o2*. Результат сравнения сохраняется в *result*. Возвращает `-1` в случае ошибки. Это эквивалент оператора Python `result = cmp(o1, o2)`.322323**int `PyObject_Compare`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o2*)**324325Сравнивает значения *o1* и *o2* с помощью процедуры, предоставленной *o1*, если таковая существует, иначе – процедурой от *o2*. В случае успеха возвращает результат сравнения. При ошибке возвращаемое значение не определено; для обнаружения ошибки используйте [`PyErr_Occurred()`](https://python-all.ru/2.6/c-api/exceptions.html#PyErr_Occurred). Это эквивалент выражения Python `cmp(o1, o2)`.326327**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Repr`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**328329*Возвращаемое значение: новая ссылка.*330331Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха, *NULL* при ошибке. Это эквивалент выражения Python `repr(o)`. Вызывается встроенной функцией [`repr()`](https://python-all.ru/2.6/library/functions.html#repr) и обратными кавычками.332333**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Str`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**334335*Возвращаемое значение: новая ссылка.*336337Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха, *NULL* при ошибке. Это эквивалент выражения Python `str(o)`. Вызывается встроенной функцией [`str()`](https://python-all.ru/2.6/library/functions.html#str) и оператором [`print`](https://python-all.ru/2.6/reference/simple_stmts.html#print).338339**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Bytes`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**340341Вычисляет байтовое представление объекта *o*. В версии 2.x это просто псевдоним для [`PyObject_Str()`](https://python-all.ru/2.6/c-api/object.html#PyObject_Str).342343**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Unicode`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**344345*Возвращаемое значение: новая ссылка.*346347Вычисляет строковое представление в Unicode объекта *o*. Возвращает строковое представление Unicode в случае успеха, *NULL* при ошибке. Это эквивалент выражения Python `unicode(o)`. Вызывается встроенной функцией [`unicode()`](https://python-all.ru/2.6/library/functions.html#unicode).348349**int `PyObject_IsInstance`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*inst*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*cls*)**350351Возвращает `1`, если *inst* является экземпляром класса *cls* или подкласса *cls*, и `0` в противном случае. В случае ошибки возвращает `-1` и устанавливает исключение. Если *cls* является объектом типа, а не объектом класса, [`PyObject_IsInstance()`](https://python-all.ru/2.6/c-api/object.html#PyObject_IsInstance) возвращает `1`, если *inst* имеет тип *cls*. Если *cls* – кортеж, проверка будет выполнена по каждому элементу в *cls*. Результат будет `1`, когда хотя бы одна из проверок вернёт `1`, иначе будет `0`. Если *inst* не является экземпляром класса, а *cls* – ни объектом типа, ни объектом класса, ни кортежем, *inst* должен иметь атрибут `__class__` – отношение класса значения этого атрибута к *cls* будет использовано для определения результата этой функции.352353Новое в версии 2.1.354355Изменено в версии 2.2: Добавлена поддержка кортежа в качестве второго аргумента.356357Определение подкласса выполняется достаточно прямолинейно, но содержит тонкость, о которой разработчикам расширений системы классов стоит знать . Если `A` и `B` являются объектами классов, `B` является подклассом `A`, если он наследует от `A` прямо или косвенно. Если хотя бы один из них не является объектом класса, используется более общий механизм для определения отношения классов между двумя объектами. При проверке, является ли *B* подклассом *A*, если *A* равен *B*, [`PyObject_IsSubclass()`](https://python-all.ru/2.6/c-api/object.html#PyObject_IsSubclass) возвращает true. Если *A* и *B* – разные объекты, атрибут *B* `__bases__` ищется в глубину на наличие *A* – наличие атрибута `__bases__` считается достаточным для такого определения.358359**int `PyObject_IsSubclass`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*derived*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*cls*)**360361Возвращает `1`, если класс *derived* идентичен классу *cls* или наследуется от него, иначе возвращает `0`. В случае ошибки возвращает `-1`. Если *cls* является кортежем, проверка будет выполнена для каждого элемента *cls*. Результат будет `1`, когда хотя бы одна из проверок возвращает `1`, иначе `0`. Если *derived* или *cls* не являются реальными объектами классов (или кортежем), эта функция использует описанный выше общий алгоритм.362363Новое в версии 2.1.364365Изменено в версии 2.3: Более старые версии Python не поддерживали кортеж в качестве второго аргумента.366367**int `PyCallable_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**368369Определяет, является ли объект370371*o*372373вызываемым. Возвращает374375`1`376377, если объект вызываем, и378379`0`380381в противном случае. Эта функция всегда завершается успешно.382383**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Call`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*callable\_object*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*args*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*kw*)**384385*Возвращаемое значение: новая ссылка.*386387Вызывает вызываемый объект Python *callable\_object* с аргументами, заданными кортежем *args*, и именованными аргументами, заданными словарём *kw*. Если именованные аргументы не нужны, *kw* может быть *NULL*. *args* не должен быть *NULL*; используйте пустой кортеж, если аргументы не нужны. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `apply(callable_object, args, kw)` или `callable_object(*args, **kw)`.388389Новое в версии 2.2.390391**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_CallObject`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*callable\_object*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*args*)**392393*Возвращаемое значение: новая ссылка.*394395Вызывает вызываемый объект Python *callable\_object* с аргументами, заданными кортежем *args*. Если аргументы не нужны, *args* может быть *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `apply(callable_object, args)` или `callable_object(*args)`.396397**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_CallFunction`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*callable*, char *\*format*, ...)**398399*Возвращаемое значение: новая ссылка.*400401Вызывает вызываемый объект Python *callable* с переменным числом аргументов C. Аргументы C описываются строкой формата в стиле [`Py_BuildValue()`](https://python-all.ru/2.6/c-api/arg.html#Py_BuildValue). Формат может быть *NULL*, что означает отсутствие аргументов. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `apply(callable, args)` или `callable(*args)`. Обратите внимание, что если передаются только аргументы типа [`PyObject *`](https://python-all.ru/2.6/c-api/structures.html#PyObject), то быстрее будет использовать [`PyObject_CallFunctionObjArgs()`](https://python-all.ru/2.6/c-api/object.html#PyObject_CallFunctionObjArgs).402403**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_CallMethod`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, char *\*method*, char *\*format*, ...)**404405*Возвращаемое значение: новая ссылка.*406407Вызывает метод с именем *method* объекта *o* с переменным числом аргументов C. Аргументы C описываются строкой форматирования в стиле [`Py_BuildValue()`](https://python-all.ru/2.6/c-api/arg.html#Py_BuildValue), которая должна создавать кортеж. Формат может быть *NULL*, что означает отсутствие аргументов. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `o.method(args)`. Обратите внимание: если передаются только аргументы типа [`PyObject *`](https://python-all.ru/2.6/c-api/structures.html#PyObject), то более быстрой альтернативой будет [`PyObject_CallMethodObjArgs()`](https://python-all.ru/2.6/c-api/object.html#PyObject_CallMethodObjArgs).408409**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_CallFunctionObjArgs`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*callable*, ..., NULL)**410411*Возвращаемое значение: новая ссылка.*412413Вызывает вызываемый объект Python *callable* с переменным числом аргументов типа [`PyObject*`](https://python-all.ru/2.6/c-api/structures.html#PyObject). Аргументы передаются как переменное число параметров, за которыми следует *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке.414415Новое в версии 2.2.416417**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_CallMethodObjArgs`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*name*, ..., NULL)**418419*Возвращаемое значение: новая ссылка.*420421Вызывает метод объекта *o*, где имя метода передаётся в виде строкового объекта Python в *name*. Вызывается с переменным числом аргументов [`PyObject*`](https://python-all.ru/2.6/c-api/structures.html#PyObject). Аргументы передаются как переменное число параметров, за которыми следует *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке.422423Новое в версии 2.2.424425**long `PyObject_Hash`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**426427Вычисляет и возвращает хеш-значение объекта *o*. В случае ошибки возвращает `-1`. Это эквивалент выражения Python `hash(o)`.428429**long `PyObject_HashNotImplemented`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**430431Устанавливает [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError), сообщающий, что `type(o)` не хешируется, и возвращает `-1`. Эта функция получает особую обработку, если помещена в слот `tp_hash`, позволяя типу явно указать интерпретатору, что он не хешируется.432433Новое в версии 2.6.434435**int `PyObject_IsTrue`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**436437Возвращает438439`1`440441, если объект442443*o*444445считается истинным, и446447`0`448449в противном случае. Это эквивалент выражения Python450451`not not o`452453. В случае ошибки возвращает454455`-1`456457.458459**int `PyObject_Not`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**460461Возвращает462463`0`464465, если объект466467*o*468469считается истинным, и470471`1`472473в противном случае. Это эквивалент выражения Python474475`not o`476477. В случае ошибки возвращает478479`-1`480481.482483**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Type`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**484485*Возвращаемое значение: новая ссылка.*486487Если *o* не равно *NULL*, возвращает объект типа, соответствующий типу объекта *o*. В случае ошибки возбуждает [`SystemError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.SystemError) и возвращает *NULL*. Это эквивалент выражения Python `type(o)`. Эта функция увеличивает счётчик ссылок возвращаемого значения. Нет особой причины использовать эту функцию вместо обычного выражения `o->ob_type`, которое возвращает указатель типа [`PyTypeObject*`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject), за исключением случаев, когда требуется увеличенный счётчик ссылок.488489**int `PyObject_TypeCheck`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) *\*type*)**490491Возвращает истину, если объект *o* имеет тип *type* или является подтипом *type*. Оба параметра не должны быть *NULL*.492493Новое в версии 2.2.494495**Py\_ssize\_t `PyObject_Length`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**496497**Py\_ssize\_t `PyObject_Size`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**498499Возвращает длину объекта *o*. Если объект *o* предоставляет протоколы последовательности и отображения, возвращается длина последовательности. При ошибке возвращается `-1`. Это эквивалент выражения Python `len(o)`.500501Изменено в версии 2.5: Ранее эти функции возвращали значение типа `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.502503**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_GetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*key*)**504505*Возвращаемое значение: новая ссылка.*506507Возвращает элемент *o*, соответствующий объекту *key*, или *NULL* при ошибке. Это эквивалентно выражению Python `o[key]`.508509**int `PyObject_SetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*key*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*v*)**510511Сопоставляет объект512513*key*514515со значением516517*v*518519. При ошибке возвращает520521`-1`522523. Это эквивалент инструкции Python524525`o[key] = v`526527.528529**int `PyObject_DelItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*key*)**530531Удаляет отображение для532533*key*534535из536537*o*538539. При ошибке возвращает540541`-1`542543. Это эквивалент инструкции Python544545`del o[key]`546547.548549**int `PyObject_AsFileDescriptor`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**550551Извлекает файловый дескриптор из объекта Python. Если объект является целым числом (int) или длинным целым (long), возвращается его значение. В противном случае вызывается метод объекта552553`fileno()`554555, если он существует; метод должен возвращать целое или длинное целое число, которое и будет значением файлового дескриптора. Возвращает556557`-1`558559при ошибке.560561**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_Dir`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**562563*Возвращаемое значение: новая ссылка.*564565Это эквивалент выражения Python `dir(o)`, возвращает (возможно, пустой) список строк, соответствующий аргументу-объекту, или *NULL* в случае ошибки. Если аргумент равен *NULL*, это аналогично Python `dir()`, возвращающему имена текущих локальных переменных; в этом случае, если активного кадра выполнения нет, возвращается *NULL*, но [`PyErr_Occurred()`](https://python-all.ru/2.6/c-api/exceptions.html#PyErr_Occurred) вернёт ложь.566567**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyObject_GetIter`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**568569*Возвращаемое значение: новая ссылка.*570571Это эквивалент выражения Python `iter(o)`. Возвращает новый итератор для аргумента-объекта или сам объект, если он уже является итератором. Возбуждает [`TypeError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.TypeError) и возвращает *NULL*, если объект не может быть итерирован.572