Что такое PyObject в Python?

короткая версия

недавно я столкнулся с некоторым кодом Python, в котором тип возврата для функции был указан как PyObject на документация. Что такое PyObject?

Полная версия

Я не программист на C / C++, но когда я столкнулся с PyObject в документации, связанной выше, Google научил меня, что PyObject - Это объект Python, определенный с помощью API Python/C. В частности, документация по API определяет PyObject следующим образом:

все типы объектов являются расширениями этого типа. Это тип, который содержит информацию, необходимую Python для обработки указателя на объект в качестве объекта. В обычной сборке" release " она содержит только счетчик ссылок на объект и указатель на соответствующий тип объект. Он соответствует полям, определенным расширением Макрос PyObject_HEAD.

откровенно, Я не совсем понимаю это, или он отвечает на мой основной вопрос, но это не заставляет меня думать, что очевидно неправильно просто думать о PyObject как объект Python, полная остановка. С другой стороны, возможно, технически считать PyObject тип должен быть создан как расширение для стандартного Python с использованием API Python/C. Например, является целым числом a PyObject?

потенциально соответствующих ссылки

http://docs.scipy.org/doc/numpy/reference/c-api.types-and-structures.html

2 ответов


каждый стоимостью вы можете в Python-это PyObject В C. Это включает в себя списки, словари, сокеты, файлы, целые числа, строки, функции, классы, вы называете его. Если вы можете коснуться его в Python, это PyObject В С.


A PyObject на самом деле это просто объект Python на уровне C. И поскольку целые числа в Python являются объектами, они также PyObjects. Не имеет значения, было ли это написано на Python или на C, это PyObject на уровне C независимо от.