以前写在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基础笔记html"这个压缩包文件显然是一个关于Python基础知识的学习资料,包含了HTML格式的笔记,可能涵盖了变量、数据类型、控制结构、函数、模块等核心概念。 1. **Python简介**:Python是由Guido van ...
在马哥教育的PYTHON相关基础笔记中,我们看到几个关键知识点: 1. **推荐书籍**:学习Python时,有几本经典教材值得参考,包括《Python Cookbook》、《Learn Python the Hard Way》、《Google's Python Class》以及...
本笔记涵盖了 Python 语言的基础知识,包括 Python 的特点、解释型语言、面向对象的思维方式、Python 的优缺点、执行 Python 程序的三种方式、变量类型和变量定义等内容。 一、Python 特点 Python 是一种完全面向...
python基础笔记第一份,很不错,这是文档,还会有代码上传
第一章: 千锋python基础 千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、...
这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...
这篇“Python入门笔记”旨在帮助初学者快速掌握Python的基础知识,通过实践操作来加深理解。 首先,Python的语法特点是它的一大亮点。Python代码强调可读性,遵循“缩进决定代码块”的原则,避免了大括号带来的视觉...
### Python基础笔记知识点详解 #### 一、Python简介与计算机基础知识 ##### 1.1 课程目标 - **理解计算机的基本组成**:了解计算机硬件与软件系统的构成。 - **掌握Python语言特点**:认识Python语言的优势及局限...
这篇学习笔记主要涵盖了Python的基础知识,包括列表(List)、元组(Tuple)、输入与输出、条件语句(If-Else)以及循环结构(For-While)。下面将详细解释这些概念。 1. **列表(List)** 列表是Python中最常用的数据结构...
《疯狂Python讲义笔记》是一本详尽的Python学习指南,涵盖了从基础到进阶的知识点,适合初学者和有一定经验的开发者。笔记内容丰富,包括变量和简单类型、列表、元组和字典、函数和lambda表达式、类和对象、异常处理...
以上只是Python基础和软件测试自动化的一个概览。深入学习Python,掌握更多的库和框架,如BeautifulSoup(网页抓取),Pandas(数据分析),以及自动化测试工具如Robot Framework,能让你在软件测试领域更加得心应手...
本教程笔记涵盖了 Python 的基础知识点,包括变量、字符串、列表、元组、布尔类型、逻辑运算符、循环结构、列表访问、成员资格运算符、is 运算符、引用和拷贝、列表推导式、元组的使用、字符串的加法和乘法、格式化...
零基础学Python口袋笔记课件 归纳总结整理手册07 第7章 面向对象的程序设计背记手册.pdf 零基础学Python口袋笔记课件 归纳总结整理手册08 第8章 模块背记手册方案.pdf 零基础学Python口袋笔记课件 归纳总结整理手册...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能...理解这些基础知识是深入学习Python的前提,也是成为熟练Python程序员的第一步。随着对这些概念的熟悉和实践,将能够编写出更复杂、功能丰富的Python程序。
### Python学习笔记知识点详解 ...通过以上知识点的梳理,我们可以看出,“Python学习笔记.pdf”涵盖了Python语言的基础到高级的多个方面,是一份全面且实用的学习材料,适合初学者到有经验的开发者阅读和参考。
python刚刚开始学习还没入门的,可以试一下这些例题,掌握快速
map()函数是Python中的一个重要函数,它接受两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象。map()函数会将第一个参数的函数应用到第二个参数的每个元素上,返回一个迭代器对象。例如,可以定义一个...
"Python基础课程笔记.zip"是一个包含六星教育提供的Python入门学习资料的压缩包,旨在帮助初学者快速掌握Python编程的基本概念和技能。 在这个压缩包中,你可能会找到关于以下关键知识点的详细讲解: 1. **Python...
通过这份笔记,学习者可以对Python的基础语法和数据结构有一个初步的了解。笔记虽然还处于更新中,但已有的内容已覆盖了Python编程的核心知识点。对于初学者来说,这是一份很好的学习资料,有助于他们在学习Python的...