【2】python核心编程 第四章-python对象

1、python对象

所有的Python 对像都拥有三个特性:身份,类型和值。
身份:
每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。
这个值可以被认为是该对象的内存地址。您极少会用到这个值,也不用太关心它究竟是什么。

类型
对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。您可以用内建函数type()查看Python 对象的类型。因为在Python 中类型也是对象(还记得我们提到Python 是面向对象的这句话吗?),所以type()返回的是对象而不是简单的字符串。

值
对象表示的数据项

2、布尔值

所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布
尔 True 或 False 值。空对象、值为零的任何数字或者Null 对象 None 的布尔值都是False。
下列对象的布尔值是False。
􀁺 None
􀁺 False (布尔类型)
􀁺 所有的值为零的数:
􀁺 0 (整型)
􀁺 (浮点型)
􀁺 0L (长整型)
􀁺 0.0+0.0j (复数)
􀁺 "" (空字符串)
􀁺 [] (空列表)
􀁺 () (空元组)
􀁺 {} (空字典)
值不是上面列出来的任何值的对象的布尔值都是 True,例如non-empty、 non-zero 等等。
用户创建的类实例如果定义了nonzero(__nonzero__())或length(__len__())且值为0,那
么它们的布尔值就是 False。

3、标准类型内建函数

 1 除了这些运算符, 我们刚才也看到, Python 提供了一些内建函数用于这些基本对象类型:
 2 cmp(), repr(), str(), type(), 和等同于repr()函数的单反引号(``) 运算符。
 3 表4.4 标准类型内建函数
 4 函数 功能
 5 cmp(obj1, obj2)   比较 obj1 和 obj2, 根据比较结果返回整数 i:
 6 i < 0 if obj1 < obj2
 7 i > 0 if obj1 > obj2
 8 i == 0 if obj1 == obj2
 9 repr(obj) 或 `obj`   返回一个对象的字符串表示
10 str(obj)   返回对象适合可读性好的字符串表示
11 type(obj)   得到一个对象的类型,并返回相应的type 对象

4、为什么我们有了repr()还需要``

1 在Python 学习过程中,你偶尔会遇到某个运算符和某个函数是做同样一件事情。之所以如
2 此是因为某些场合函数会比运算符更适合使用。举个例子, 当处理类似函数这样的可执行对象
3 或根据不同的数据项调用不同的函数处理时,函数就比运算符用起来方便。另一个例子就是双
4 星号(**)乘方运算和pow()内建函数,x ** y 和 pow(x,y) 执行的都是x 的y 次方。

5、判断对象类型

 1 class objA: 
 2 pass 
 3 
 4 A = objA() 
 5 B = 'a','v' 
 6 C = 'a string' 
 7 
 8 print isinstance(A, objA) 
 9 print isinstance(B, tuple) 
10 print isinstance(C, basestring) 

6、以更新模型为标准的类型分类

1 更新模型
2 分类   Python 类型
3 可变类型   列表, 字典
4 不可变类型   数字、字符串、元组
1 x = 'Python numbers and strings'
2 x = 'are immutable?!? What gives?'
3 i = 0
4 i = i + 1
5 解释:一个新对象被创建,然后它取代了旧对象

7、访问模型中三种访问方式:直接存取,顺序,和映射

1 对非容器类型可以直接访问。所有的数值类型都归到这一类。
2 序列类型是指容器内的元素按从0 开始的索引顺序访问。一次可以访问一个元素或多个元
3 素, 也就是大家所了解的切片(slice)。字符串, 列表和元组都归到这一类。我们前面提到过,
4 Python 不支持字符类型,因此,虽然字符串是简单文字类型,因为它有能力按照顺序访问子字
5 符串,所以也将它归到序列类型。
6 映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素
7 无序存放, 通过一个唯一的key 来访问, 这就是映射类型, 它容纳的是哈希键-值对的集合。
1 分类   Python 类型
2 直接访问   数字
3 顺序访问   字符串、列表、元组
4 映射访问   字典
1 数据类型    存储模型    更新模型   访问模型l
2 数字        Scalar      不可更改    直接访问
3 字符串      Scalar      不可更改     顺序访问
4 列表        Container   可更改      顺序访问
5 元组        Container   不可更改    顺序访问
6 字典        Container   可更改      映射访问

 

posted @ 2015-10-13 09:21  jakey.chen  阅读(265)  评论(0编辑  收藏  举报