`
jinvasshole
  • 浏览: 792273 次
文章分类
社区版块
存档分类
最新评论

【Python旧时笔记 一】Python对象基础

 
阅读更多

以前写在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核心笔记.pdf

    【Python核心笔记】深入浅出地探讨了Python这一强大且多用途的编程语言。Python以其简单易用且功能强大的特性,赢得了广大开发者的喜爱。它是一种解释型的高级编程语言,支持面向对象编程,同时也具备过程化编程的...

    python基础笔记html.rar

    "python基础笔记html"这个压缩包文件显然是一个关于Python基础知识的学习资料,包含了HTML格式的笔记,可能涵盖了变量、数据类型、控制结构、函数、模块等核心概念。 1. **Python简介**:Python是由Guido van ...

    马哥python课堂笔记-马哥教育PYTHON相关基础笔记.pdf

    在马哥教育的PYTHON相关基础笔记中,我们看到几个关键知识点: 1. **推荐书籍**:学习Python时,有几本经典教材值得参考,包括《Python Cookbook》、《Learn Python the Hard Way》、《Google's Python Class》以及...

    Python基础笔记(全).pdf

    本笔记涵盖了 Python 语言的基础知识,包括 Python 的特点、解释型语言、面向对象的思维方式、Python 的优缺点、执行 Python 程序的三种方式、变量类型和变量定义等内容。 一、Python 特点 Python 是一种完全面向...

    python基础笔记1

    python基础笔记第一份,很不错,这是文档,还会有代码上传

    千峰python课件笔记+源码 (凯哥)

    第一章: 千锋python基础 千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、...

    Python学习笔记(干货) 中文PDF完整版.pdf

    这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...

    python入门笔记(推荐)

    这篇“Python入门笔记”旨在帮助初学者快速掌握Python的基础知识,通过实践操作来加深理解。 首先,Python的语法特点是它的一大亮点。Python代码强调可读性,遵循“缩进决定代码块”的原则,避免了大括号带来的视觉...

    Python基础笔记

    ### Python基础笔记知识点详解 #### 一、Python简介与计算机基础知识 ##### 1.1 课程目标 - **理解计算机的基本组成**:了解计算机硬件与软件系统的构成。 - **掌握Python语言特点**:认识Python语言的优势及局限...

    python学习笔记1-(廖雪峰教程,菜鸟教程)python基础.pdf

    这篇学习笔记主要涵盖了Python的基础知识,包括列表(List)、元组(Tuple)、输入与输出、条件语句(If-Else)以及循环结构(For-While)。下面将详细解释这些概念。 1. **列表(List)** 列表是Python中最常用的数据结构...

    疯狂Python讲义笔记 Python基础入门到进阶知识手册 对照原文的笔记 由浅入深 循序渐进的笔记 共197页.pdf

    《疯狂Python讲义笔记》是一本详尽的Python学习指南,涵盖了从基础到进阶的知识点,适合初学者和有一定经验的开发者。笔记内容丰富,包括变量和简单类型、列表、元组和字典、函数和lambda表达式、类和对象、异常处理...

    python基础笔记.zip

    以上只是Python基础和软件测试自动化的一个概览。深入学习Python,掌握更多的库和框架,如BeautifulSoup(网页抓取),Pandas(数据分析),以及自动化测试工具如Robot Framework,能让你在软件测试领域更加得心应手...

    小甲鱼python教程笔记

    本教程笔记涵盖了 Python 的基础知识点,包括变量、字符串、列表、元组、布尔类型、逻辑运算符、循环结构、列表访问、成员资格运算符、is 运算符、引用和拷贝、列表推导式、元组的使用、字符串的加法和乘法、格式化...

    完整优质版 零基础学Python口袋笔记课件 归纳总结整理手册 Python背记手册 共16份优质文档.rar

    零基础学Python口袋笔记课件 归纳总结整理手册07 第7章 面向对象的程序设计背记手册.pdf 零基础学Python口袋笔记课件 归纳总结整理手册08 第8章 模块背记手册方案.pdf 零基础学Python口袋笔记课件 归纳总结整理手册...

    python基础教程(第三版)学习笔记.pdf

    Python是一种高级编程语言,以其简洁明了的语法和强大的功能...理解这些基础知识是深入学习Python的前提,也是成为熟练Python程序员的第一步。随着对这些概念的熟悉和实践,将能够编写出更复杂、功能丰富的Python程序。

    Python学习笔记.pdf

    ### Python学习笔记知识点详解 ...通过以上知识点的梳理,我们可以看出,“Python学习笔记.pdf”涵盖了Python语言的基础到高级的多个方面,是一份全面且实用的学习材料,适合初学者到有经验的开发者阅读和参考。

    python入门笔记(强烈推荐).pdf

    python刚刚开始学习还没入门的,可以试一下这些例题,掌握快速

    最新Python学习笔记3

    map()函数是Python中的一个重要函数,它接受两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象。map()函数会将第一个参数的函数应用到第二个参数的每个元素上,返回一个迭代器对象。例如,可以定义一个...

    Python基础课程笔记.zip

    "Python基础课程笔记.zip"是一个包含六星教育提供的Python入门学习资料的压缩包,旨在帮助初学者快速掌握Python编程的基本概念和技能。 在这个压缩包中,你可能会找到关于以下关键知识点的详细讲解: 1. **Python...

    python学习笔记.pdf

    通过这份笔记,学习者可以对Python的基础语法和数据结构有一个初步的了解。笔记虽然还处于更新中,但已有的内容已覆盖了Python编程的核心知识点。对于初学者来说,这是一份很好的学习资料,有助于他们在学习Python的...

Global site tag (gtag.js) - Google Analytics