Python编程语言的出现给我们带来了非常大的好处。对于这样一款面向对象的开源语言,其在开发领域中占据着非常重要的地位。在这里我们就先从Python对象的应用开始来一起了解一下这一语言的面向对象特征。#t#
“万物皆对象”(Everything is object),这是Python这种面向对象语言所倡导的理念。在我们熟悉的C++中,1只是一个整型数,而不是一个对象。但在Python中,1却是一个实实在在的对象,您可以用dir(1)来显示它的属性。
Python对象都有下面三个特征:
* ***的标识码(identity)
* 类型
* 内容(或称为值)
一旦Python对象被创建,它的标识码就不允许更改。对象的标识码可以有内建函数id()获取,它是一个整型数。您可以将它想象为该对象在内存中的地址,其实在目前的实现中标识码也就是该对象的内存地址。
- >>> class c1:
- pass
- ...
- >>> obj = c1()
- >>> obj
- <__main__.c1 instance at 0x00AC0738>
- >>> id(obj)
- 11274040
换算一下,11274040就是十六进制的0x00AC0738。
- >>> id(1)
- 7957136
这就是前面提到的1这个对象的标识码,也就是它在内存中的地址。
当用is操作符比较两个对象时,就是在比较它们的标识码。更确切地说,is操作符是在判断两个对象是否是同一个Python对象。
- >>> [1] is [1]
其结果是False,是因为这是两个不同的对象,存储在内存中的不同地方。
- >>> [1] == [1]
其结果是True,是因为这两个不同的Python对象有着相同的值。
与对象的标识码类似,对象的类型也是不可更改的。可以用内建函数type()取得对象的类型。
有的对象的值是可以改变的,这类对象叫作可变对象;而另外一些对象在创建后其值是不可改变的(如1这个对象),这类对象叫作恒定对象。对象的可变性是由它的类型决定的,比如数值型(number)、字符串型(string)以及序列型(tuple)的对象是恒定对象;而字典型(dictionary)和列表型(list)的对象是可变对象。
除了上面提到的三个特征外,一个Python对象可能:
* 没有或者拥有多个方法
* 没有或者有多个名字