
从广义上来讲,Python把在程序中用到的任何东西都称为对象 。
雨痕大大在《Python学习笔记》中做了比较简明的介绍:
先有类型 (Type),⽽后才能⽣成实例 (Instance)。Python 中的⼀切都是对象。
包括类型在内的每个对象都包含⼀个标准头,通过头部信息就可以明确知道其具体类型。
头信息由 “引⽤计数” 和 “类型指针” 组成,前者在对象被引⽤时增加,超出作⽤域或⼿⼯释放后减⼩,等于 0 时会被虚拟机回收 (某些被缓存的对象计数器永远不会为 0)。
以 int 为例,对应 Python 结构定义是:
1 2 3 4 5 6 7 8 9 10 11 12 |
#define PyObject_HEAD \ Py_ssize_t ob_refcnt; \ struct _typeobject *ob_type; typedef struct _object { PyObject_HEAD } PyObject; typedef struct { PyObject_HEAD! ! // 在64 位版本中,头⻓度为16 字节。 long ob_ival;! ! // long 是8 字节。 } PyIntObject; |