Python回顾与整理2:Python对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python回顾与整理2:Python对象相关的知识,希望对你有一定的参考价值。

0.说明

        

        说对象是面向对象编程语言最重要的一部分一点也不为过,没有了“对象”,面向对象将无从谈起。Python也是如此,如果无法掌握对象,你很难有大的进步与提升。




1.Python对象


(1)对象特性

        Python使用对象模型来存储数据,构造任何类型的值都是一个对象,所有的Python对象都拥有下面的三个特性:

  • 身份:每个对象一唯一身份标识,可使用内建函数id()查看该值(可以认为这个值是该对象的内在地址)

  • 类型:对象的类型决定了对象(可以保存什么类型的值,进行什么样的操作,遵循什么样的规则),可以使用内建函数type()查看(对象的类型也是一个对象,因此type()返回的是一个对象,而不是字符串)

  • :对象表示的数据项

        对于身份特性,它是可读的;对于类型特性,新式类型和类可以修改,但不建议初学者这样做,另外Python有一系列的基本(内建)数据类型,可以自己定义(一般推荐通过创建和实例化类来对特定的数据进行存储);对于值,取决于该对象是否支持更新操作。

        

(2)对象属性

        Python使用句点标记法来访问属性,最常用的属性是函数和方法,当然一些Python对象也有数据属性。




2.标准类型


  • 数字(分为几个子类型,有三个是整型)

    Integer    整型

    Boolean    布尔型

    Long integer    长整型

    Floating point real number    浮点型

    Complex number    复数型

  • String    字符串

  • List            列表

  • Tuple         元组

  • Dictionary  字典

        需要注意的是,使用上面这些基本类型所构造的值都为该类型对应的对象。




3.其他内建类型


  • 类型

  • Null对象(None)

  • 文件

  • 集合/固定集合

  • 函数/方法

  • 模块

  • 下面主要说明Type和None类型,其它的后面会讨论。

(1)类型对象和type类型对象

        前面提到,对象有一系列行为和特性,而这些信息就是保存在对象的类型当中:

>>> type(42)
<type ‘int‘>

        type()返回的是一个类型对象,表明42是一个数字类型对象,而<type ‘int‘>本身也有所属于的类型,可以继续使用type()来查看:

>>> type(type(42))
<type ‘type‘>

        <type ‘type‘>表示<type ‘int‘>是一个type类型对象,尝试继续使用内建函数type()来作进一步操作:

>>> type(type(type(42)))
<type ‘type‘>

        得到的还是type类型对象,于是可以有下面的结论:

  • 所有类型对象的类型都是type,它也是所有Python类型的根和所有Python标准类的默认元类(metaclass)

  • 在Python中,类就是类型,实例是对应类型的对象(类比42的例子,42属于数字类型,它是数字类型构造值后的一个数字对象)


(2)None:Python的Null对象

        Python有一个特殊的类型,被称为Null对象或者NoneType,它只有一个值,那就是None

>>> None
>>> type(None)
<type ‘NoneType‘>

        None没有什么有用的属性,它的布尔值总是False。


(3)布尔值

        前面提及布尔值,有以下几点注意:

  • 每个对象天生具有布尔True或False值

  • 空对象 值为零的任何数字或者Null对象的布尔值都是False

  • 用户创建的类实例如果定义了nonzero(__nonzero__())或length(__len__())且值为0,那么它们的布尔值就是False




4.内部类型


  • 代码

  • 跟踪记录

  • 切片

  • 省略

  • Xrange


(1)代码对象

        代码对象是编译过的Python源代码片段,它是可执行对象,通过调用内建函数compile()可以得到,然后可以被exec命令或eval()内建函数来执行。

        代码对象本身不包含任何执行环境信息,它是用户自定义函数的核心,在被执行时动态获得上下文(事实上代码对象是函数的一个属性)。一个函数除了有代码对象属性以外,还有一些其他函数必须的属性,包括函数名 文档字符串 默认参数及全局命名空间等。


(2)帧对象

        帧对象表示Python的执行栈帧。帧对象包含Python解释器在运行时所需要知道的所有信息,它的属性包含下面这些信息:

  • 指向上一帧的链接

  • 正在被执行的代码对象

  • 本地及全局名称空间字典及当前指令等

        每次函数调用产生一个新的帧,每一个帧对象都会相应创建一个C栈帧,用到帧对象的一个地方是跟踪记录对象。


(3)跟踪记录对象

        当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以访问这个跟踪记录对象。


(4)切片对象

        当使用Python扩展的切片语法时,就会创建切片对象。


(5)省略对象

        省略对象用于扩展切片语法中,起记号作用。这个对象在切片语法中表示省略号。类似Null对象None,省略对象有一个唯一的名字Ellipsis:

>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<type ‘ellipsis‘>

        它的布尔值始终为True。


(6)Xrange对象

        调用内建函数xrange()会生成一个Xrange对象,xrange()是内建函数range()的兄弟版本,用于需要节省内存使用或range()无法完成的超大数据集场合。


















本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1750361

以上是关于Python回顾与整理2:Python对象的主要内容,如果未能解决你的问题,请参考以下文章

Python回顾与整理3:数字

Python回顾与整理5:映像和集体类型

面向对象知识点回顾整理

Python回顾与整理6:条件和循环

Python回顾与整理4:序列(字符串/列表/元组)

常用python日期日志获取内容循环的代码片段