короткая версияЧто такое PyObject в Python?
Недавно я наткнулся на некоторый код Python, в котором тип возвращаемого значения для функции был указан в качестве PyObject
в the documentation. Что такое PyObject
?
Подробная версия
Я не C/C++ программист, но, когда я столкнулся с PyObject
в документации, связанной выше, Google научил меня, что PyObject
является объектом Python, как определено с использованием Python/C API , В частности, API documentation определяет PyObject следующим образом:
Все типы объектов являются расширениями этого типа. Это тип, который содержит информацию, на которую Python должен обрабатывать указатель на объект как объект. В обычной сборке «release» он содержит только счет ссылки объекта и указатель на соответствующий тип . Он соответствует полям, определяемым расширением макроса Py12b.
Честно говоря, я не совсем понимаю, или отвечает ли это мой основной вопрос, но это не заставляет меня думать, что это, очевидно, не так просто думать о PyObject
как объект Python, полной остановки. С другой стороны, возможно, чтобы технически считать PyObject
, тип должен был быть создан как расширение стандартного Python с использованием API Python/C. Например, является целым числом PyObject
?
Потенциально соответствующие ссылки
http://docs.scipy.org/doc/numpy/reference/c-api.types-and-structures.html
Вы можете понять, как тип PyObject C используется, например, в определении C строки Python здесь. Https://github.com/python-git/python/blob/master/Include/stringobject.h – Jivan
Также обратите внимание, что, насколько мне известно, Python является чистым C, а не C++ – Jivan
@ Jivan Я думал, что расширения могут работать с ними, но я могу удалить тег C++, если это неправильно ... – neuronet