Python對象主要特征解析
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對象有著相同的值。
與對象的標識碼類似,對象的類型也是不可更改的??梢杂脙冉ê瘮祎ype()取得對象的類型。
有的對象的值是可以改變的,這類對象叫作可變對象;而另外一些對象在創建后其值是不可改變的(如1這個對象),這類對象叫作恒定對象。對象的可變性是由它的類型決定的,比如數值型(number)、字符串型(string)以及序列型(tuple)的對象是恒定對象;而字典型(dictionary)和列表型(list)的對象是可變對象。
除了上面提到的三個特征外,一個Python對象可能:
* 沒有或者擁有多個方法
* 沒有或者有多個名字