1.1.1 对象机制的基石——PyObject
在Python 中,所有的东西都是对象,而所有的对象都拥有一些相同的内容,这些内容在PyObject 中定义,PyObject 是整个Python 对象机制的核心。
[object.h] |
[object.h] |
[object.h] |
在PyObject 的定义中,整型变量ob_refcnt 与Python 的内存管理机制有关,它实现了基于引用计数的垃圾收集机制。对于某一个对象A,当有一个新的PyObject *引用该对象时,A 的引用计数应该增加;而当这个PyObject *被删除时,A 的引用计数应该减少。当A 的引用计数减少到0 时,A 就可以从堆上被删除,以释放出内存供别的对象使用。在ob_refcnt 之外,我们注意到ob_type 是一个指向_typeobject 结构体的指针,那么这个结构体是一个什么东西呢?实际上这个结构体对应着Python 内部的一种特殊对象,它是用来指定一个对象类型的类型对象。这个类型对象我们将在后边详细地分析。现在我们看到了,在Python 中,对象机制的核心其实非常简单,一个是引用计数,一个就是类型信息。
在PyObject 中定义了每一个Python 对象都必须有的内容,这些内容将出现在每一个Python 对象所占有的内存的最开始的字节中。这句话的另一个意思是,每一个Python 对象除了必须有这个PyObject 内容外,似乎还应该占有一些额外的内存,放置些其他的东西。没错,倘若所有的Python 对象都只包含PyObject,那Python 中岂不是只有唯一的一种对象了,这可是大大的不妙。在PyObject 中定义的内容仅仅是每一个Python 对象都必须拥有的一部分内容,以我们将在下一章剖析的整数对象为例子,你可以看到对象中除PyObject 之外“其他的东西”究竟是些什么东西。
[intobject.h] |
| 回书目 上一节 下一节 |
|
||||
| · 无线路由器故障处理 · 解析35岁技术人的价值.. · 无线重中之重:安全问题 · 无线局域网基本知识 · 家庭无线局域网 · 华为七千人主动辞职规.. · 微软出价446亿美元收购.. · 虚拟化的“赤壁之战” |
· Windows Server 2008专.. · 802.11n:下一代的无线.. · 脉冲无线电uwb专题 · AIX操作系统管理应用 · 云计算时代来临 · 求职必杀技 决战面试官 · 龙芯要做中国的“奔腾” · 2008年上半年IT技术图.. |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · 无线网状网(MESH) · Windows远程桌面应用 · C#技术开发指南 |
· Apache技术专题 · Windows集群服务应用 · C#技术开发指南 · 文档格式标准开战 OOXM.. · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 解析35岁技术人的价值.. |
|||