
Python源码剖析
文章平均质量分 69
debugm
这个作者很懒,什么都没留下…
展开
-
二、再看看不是PyObject的PyXXXObject
int,熟悉吧,看看在源码中的原型:[intobject.h]typedef struct { PyObject_HEAD long ob_ival;} PyIntObject;和PyObject相比,多了一个long型的ob_ival(值)。经常听说的可变对象,熟悉吧,看看原型:#define PyObject_VAR_HEAD \原创 2012-11-30 05:17:16 · 1655 阅读 · 0 评论 -
一、初识PyObject
PyObject是整个Python对象机制的核心[object.h]typedef struct _object {PyObject_HEAD} PyObject;[object.h]#ifdef Py_TRACE_REFS/* Define pointers to support a doubly-linked list of all live heap objects. */原创 2012-11-30 05:01:43 · 12202 阅读 · 0 评论 -
三、对象到底如何创建
一、二 文中知道,无论PyObject还是PyXXXObject,都包含有那么几样东西。具体举个例子来说,PyIntObject里面有三东西:int ob_refcnt;//引用计数struct _typeobject *ob_type; //一堆信息long ob_ival; //值只要把这三个要素构成了,不就生成一个基本的"int"了??是不是??故在intobje原创 2012-11-30 05:36:33 · 1430 阅读 · 0 评论 -
四、再谈PyTypeObject
PyTypeObject定义:[object.h]typedef struct _typeobject { PyObject_VAR_HEAD ......... ........} PyTypeObject;Python中万物皆对象。PyTypeObject其中也有PyObject_VAR_HEAD,说明是一个对象。PyTypeObject因为包含大量类型原创 2012-11-30 14:48:19 · 3395 阅读 · 0 评论 -
五、从PyIntObject出发
1.初识PyIntObject本节要说的内容是“整数”,我们来看看这个PyInt_Type变量,这个变量里面大量的元信息是我们要关注的。它描述了一个整数对象。[intobject.c]PyTypeObject PyInt_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "int", sizeof(PyIntObj原创 2012-11-30 18:54:57 · 1760 阅读 · 0 评论