Укороченная версия
Недавно я столкнулся с некоторым кодом 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. Например, является целым числом PyObject
?
Потенциально релевантные ссылки
http://docs.scipy.org/doc/numpy/reference/c-api.types-and-structures.html