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对象的主要内容,如果未能解决你的问题,请参考以下文章