[笔记]Python对象基础
来源:互联网 发布:淘宝联盟站内推广 编辑:程序博客网 时间:2024/06/05 16:06
以前写在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-基础笔记4-面向对象
- Python学习笔记:面向对象基础
- Python进阶笔记(4)_ 面向对象编程基础
- [Python] Python基础笔记
- Python对象之基础对象
- Python面向对象基础
- python面向对象基础
- python 面向对象基础
- python基础-可迭代对象
- python面向对象基础
- python 面向对象 基础
- Python基础-面向对象基础
- Python基础语法-Python对象
- 面向对象基础笔记
- Python对象学习笔记
- 基础学习有感
- Android应用自动更新功能的实现!!!
- Android Activity的四种LaunchMode!!!
- Android中UI设计的一些技巧!!!
- 【IDA*+位运算】PKU-1084-Square Destroyer
- [笔记]Python对象基础
- 关于程序安装与卸载不得不说的那些事
- (4)iPhone开发基础 - 分布式对象
- [笔记]Python的整数对象:PyIntObject
- poj 1163 The Triangle
- ASCII,Unicode和UTF-8
- [笔记]Python的字符串对象
- 数论今日发现,模的问题
- 我想学的东西