第七章 更加抽象

7.1 對象的魔力

多態:不同的對象或類調用同一個函數時執行不同的功能
封裝:隱藏對象具體的實現細節
繼承:使一個類具有另一個類的特性和方法
和C++理念相同

7.2 類和類型

私有化:使用雙下劃線
class A(B,C):創建類A並且繼承了類B,C,若B,C含有相同的方法則B會覆蓋C中的此方法。有前後順序的
檢查繼承:issuclass(A,B)——判斷A的父類(超類/基類)是不是B

本章新函數

callable(object)

中文說明:檢查對象object是否可調用。如果返回True,object仍然可能調用失敗;但如果返回False,調用對象ojbect絕對不會成功。
注意:類是可調用的,而類的實例實現了call()方法纔可調用。
版本:該函數在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以後版本中被重新添加。

>>> callable(0)
False
>>> callable("mystring")
False
>>> def add(a, b):return a + b
…
>>> callable(add)
True
>>> class A:def method(self):return 0>>> callable(A)
True
>>> a = A()
>>> callable(a)
False
>>> class B:def __call__(self):return 0>>> callable(B)
True
>>> b = B()
>>> callable(b)
True

getattr: 如果存在name屬性(方法)則返回name的值(方法地址)否則返回default值。

getattr(foo,'name','NA') #存在name屬性,所以返回其value
'fengyun'
getattr(foo,'age','NA')
'NA'

hasattr(object,name):判斷object中是否具有name屬性

hasattr(foo,’setName’) #判斷setName是否存在,存在則返回True。

isinstance(object,class):判斷對象是否是類的實例

issubclass(A,B):確定A是不是B的子類

random.choice(sequence):從非空序列隨機選擇元素

setattr(object,name,value):將對象object的屬性名爲name的屬性的值設爲value

type:返回對象的類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章