以前写在Evernote上的笔记。
Python对象机制最基础的是PyObject和PyVarObject,而后者又仅仅是比前者多了一个变量而已。
在object.h中有这两者的定义:
typedef struct _object {
PyObject_HEAD
}PyObject;
typedef struct {
PyObject_VAR_HEAD
}PyVarObject;

可以看出Python中对象的核心在于引用计数ob_refcnt和类型对象ob_type,而可变对象则多了个可变的项的数目ob_size(比如一个list有5个元素)。
这里出现了个新的变量:_typeobject,用来表示对象的类型。

代码的第一行就表示类型对象也是一个可变对象,那么类型对象也应该有类型的,定义在typeobject.c中。

宏PyObject_HEAD_INIT定义在object.h中:

由上,可知对象类型也是一种对象,为PyTypeObject,而类型对象的类型为PyType_Type,最后递归在此。
Python中所有的对象都继承PyObject,内存布局中开头都是PyObject,所以可以通过PyObject *指针来指向所有对象,进行维护、操作。
至于调用类型特有的操作,则通过ob_type这个成员来判断。
这是Python中的继承和多态。
另外一点就是Python的引用计数,管理资源、进行垃圾回收。
Python通过ob_refcnt这个成员来标识该对象被引用了几次,为0时回收。
但是回收并不一定是还给操作系统,而是采用了内存对象池。
其中,类型对象是不被引用计数的。
JasonLee 2011.08.05 0:29
分享到:
相关推荐
【Python核心笔记】深入浅出地探讨了Python这一强大且多用途的编程语言。Python以其简单易用且功能强大的特性,赢得了广大开发者的喜爱。它是一种解释型的高级编程语言,支持面向对象编程,同时也具备过程化编程的...
在马哥教育的PYTHON相关基础笔记中,我们看到几个关键知识点: 1. **推荐书籍**:学习Python时,有几本经典教材值得参考,包括《Python Cookbook》、《Learn Python the Hard Way》、《Google's Python Class》以及...
这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...
本笔记涵盖了 Python 语言的基础知识,包括 Python 的特点、解释型语言、面向对象的思维方式、Python 的优缺点、执行 Python 程序的三种方式、变量类型和变量定义等内容。 一、Python 特点 Python 是一种完全面向...
第一章: 千锋python基础 千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、...
python基础笔记第一份,很不错,这是文档,还会有代码上传
2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_...
这篇“Python入门笔记”旨在帮助初学者快速掌握Python的基础知识,通过实践操作来加深理解。 首先,Python的语法特点是它的一大亮点。Python代码强调可读性,遵循“缩进决定代码块”的原则,避免了大括号带来的视觉...
### Python基础笔记知识点详解 #### 一、Python简介与计算机基础知识 ##### 1.1 课程目标 - **理解计算机的基本组成**:了解计算机硬件与软件系统的构成。 - **掌握Python语言特点**:认识Python语言的优势及局限...
"Python基础学习整理笔记"涵盖了从入门到进阶的多个方面,旨在帮助读者系统地掌握Python的核心概念和技能。 1. **Python语法基础**: - **变量与数据类型**:包括整型(int)、浮点型(float)、字符串(str)和...
这篇学习笔记主要涵盖了Python的基础知识,包括列表(List)、元组(Tuple)、输入与输出、条件语句(If-Else)以及循环结构(For-While)。下面将详细解释这些概念。 1. **列表(List)** 列表是Python中最常用的数据结构...
《疯狂Python讲义笔记》是一本详尽的Python学习指南,涵盖了从基础到进阶的知识点,适合初学者和有一定经验的开发者。笔记内容丰富,包括变量和简单类型、列表、元组和字典、函数和lambda表达式、类和对象、异常处理...
"Python学基础笔记"涵盖了Python编程的关键概念,包括但不限于数据类型和数字类型,以及标识符的使用规则。以下是对这些核心知识点的详细阐述: 1. **Python数据类型**:在Python中,数据类型是组织和存储数据的...
Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+文档2023最新教程【樵夫教你学Python】Python全套教程 Python基础python基础课代码+...
【Python基础课程笔记】 在嵩天老师的Python基础课程中,我们首先探讨了程序设计的基本方法。计算机的本质是根据指令操作数据的设备,具备功能性(如数据计算、输入输出处理和结果存储)和可编程性(根据一系列指令...
以上只是Python基础和软件测试自动化的一个概览。深入学习Python,掌握更多的库和框架,如BeautifulSoup(网页抓取),Pandas(数据分析),以及自动化测试工具如Robot Framework,能让你在软件测试领域更加得心应手...
本教程笔记涵盖了 Python 的基础知识点,包括变量、字符串、列表、元组、布尔类型、逻辑运算符、循环结构、列表访问、成员资格运算符、is 运算符、引用和拷贝、列表推导式、元组的使用、字符串的加法和乘法、格式化...
零基础学Python口袋笔记课件 归纳总结整理手册07 第7章 面向对象的程序设计背记手册.pdf 零基础学Python口袋笔记课件 归纳总结整理手册08 第8章 模块背记手册方案.pdf 零基础学Python口袋笔记课件 归纳总结整理手册...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能...理解这些基础知识是深入学习Python的前提,也是成为熟练Python程序员的第一步。随着对这些概念的熟悉和实践,将能够编写出更复杂、功能丰富的Python程序。