PyOject (其实只是宏PyObject_HEAD的展开)
typedef struct _object {
_PyObject_HEAD_EXTRA { // 宏: 双向链表
struct _object *_ob_next;
struct _object *_ob_prev;
}
Py_ssize_t ob_refcnt; // __int64
struct _typeobject *ob_type;
}PyObject;
PyVarOject (其实只是宏PyObject_VAR_HEAD的展开)
typedef struct {
_PyObject_HEAD_EXTRA { // 宏: 双向链表
struct _object *_ob_next;
struct _object *_ob_prev;
}
Py_ssize_t ob_refcnt; // __int64
struct _typeobject *ob_type;
// 相比于PyObject只是多了一个ob_size
Py_ssize_t ob_size; /* Number of items in variable part */
}PyVarObject;
PyIntObject
typedef struct {
_PyObject_HEAD_EXTRA { // 宏: 双向链表
struct _object *_ob_next;
struct _object *_ob_prev;
}
Py_ssize_t ob_refcnt; // __int64
struct _typeobject *ob_type;
// 相比于PyObject只是多了一个ob_ival
long ob_ival;
} PyIntObject;