獲取對象信息
使用type()
1.判斷對象類型
2.判斷一個變量指向函數(shù)或類
3.type()返回的是Class類型,
4.判斷一個對象是否是函數(shù),要用types模塊中定義的常量。
使用isinstance()
1.可以判斷對象類型,判斷的是一個對象是否是該類型本身或是位于該類型的父繼承鏈上。
2.能用type()判斷的也可以用isinstance()判斷,但總是優(yōu)先使用后者,因為可以將指定類型及其子類“一網(wǎng)打盡”
3.可以判斷一個變量是否是某些類型的一種
使用dir()
可以獲取一個對象的所有屬性和方法,返回的是一個包含字符串的list。
其他方法
在Python中,類似__xx__的屬性和方法都是有特殊用途的,比如__len__方法返回長度。如果你調(diào)用len()函數(shù)獲取一個對象的長度,實際上,在len()內(nèi)部,它自動去調(diào)用該對象的__len__()方法,所以下面這兩種求長度的方法是等價的:

lower()返回小寫的字母串
getattr()獲取屬性
setattr()設置屬性
hasattr()判斷屬性是否存在
舉例

然后測試該對象的屬性:

如果獲取不存在的屬性,將會返回AttributeError的錯誤:

可以傳入一個default參數(shù),如果屬性不存在,就返回默認值

也可以獲取方法:

注意:只有在不知道對象信息時,我們才會獲取對象信息。
除了獲取對象信息我們還可以用hasasttr()來判斷,一個對象是不是有某種方法。
舉例:判斷fp對象是不是存在read方法,如果存在,則該對象是一個流,如果不存在,則無法讀取。

注意:在python中,根據(jù)鴨子類型,有read()方法,不代表該fp對象是一個文件流,它可能是一個網(wǎng)絡流,也可能是內(nèi)存中的一個字節(jié)流,但只要有read()方法返回的有效圖像數(shù)據(jù),就不影響讀取圖像的功能。
實例屬性和類屬性
1.在python中,給實例綁定屬性是通過實例變量或者self變量
2.可以直接在class中定義屬性,這種屬性,歸student類所有,但所有實例都可以訪問到。
舉例


注意:從例子中看出來,實例屬性和類屬性不要用相同名字命名,因為相同名字的實例屬性會屏蔽掉類屬性。
提早手工,回去睡覺。