我试图构建一个Python-C接口,但是当我查看源代码时,PyObject
和PyTypeObject
让我感到困惑。请问这两者之间有什么区别?如果能提供一个示例就更好了。
我试图构建一个Python-C接口,但是当我查看源代码时,PyObject
和PyTypeObject
让我感到困惑。请问这两者之间有什么区别?如果能提供一个示例就更好了。
PyObject
是 Python 中 object
的类比PyTypeObject
是 Python 中 type
的类比PyTypeObject
的 docs:用于描述内置类型的对象的 C 结构。
这相当于 Python 中 type
的实例作为 类。它包含有关类型本身的信息(例如,类型名称、文档字符串、构造函数等)。
PyObject
的 docs:所有对象类型都是此类型的扩展....
这意味着您可以将任何对象引用为 PyObject*
指针。例如:
PyObject *some_number = PyLong_FromLong(42);
PyObject
都包含指向该对象类型的指针,该指针是一个PyTypeObject
。some_number
具体是一个PyLongObject
(表示Python整数对象),表示整数类型本身的结构是PyLong_Type
(从some_number->ob_type
获得)。