1. 程式人生 > >python類與物件的內建函式大全(BIF)

python類與物件的內建函式大全(BIF)

關於類與物件的一些常用BIF(內建函式)

1、issubclass(class,classinfo)

含義:如果class是classinfo的子類,則返回True,否則返回false,用來判斷子類關係

2、isinstance(objiect,classinfo)

含義:檢查一個例項物件是否屬於一個類,第一個引數為例項物件,第二個為類

3、hasattr(object,name)

作用:測試一個物件(object)是否具有固定的屬性(name),屬性必須帶“ ”,表明是字串。

4、getattr(object,name[,default])

作用:返回一個特定物件的屬性的特定值(前提是該物件具有該屬性)

,如果該物件沒有這個屬性,則為了提高使用者的體驗,可以將第三個引數default設定為“你所訪問的屬性不存在”,這樣當不存在屬性的時候就可以返回“你所訪問的屬性不存在”。

5、setattr(object,name,value)

作用:對物件進行屬性的新定義——設定新屬性

6、delattr(object,name)

作用:用來刪除物件的固定屬性,如果該物件沒有這個屬性的話,就會丟擲異常

7、property(fget=none,fset=none,fdel=none.doc=none)

作用:通過屬性定義屬性,property() 是一個比較奇葩的BIF,它的作用把方法當作屬性來訪問,從而提供更加友好訪問方式。

property() 返回一個可以設定屬性的屬性,當然如何設定屬性還是需要我們人為來寫程式碼。第一個引數是獲得屬性的方法名(例子中是 getx),第二個引數是設定屬性的方法名(例子中是 setx),第三個引數是刪除屬性的方法名(例子中是 delx)。

property() 有什麼作用呢?舉個例子,在上邊的例題中,我們為使用者提供 setx 方法名來設定 _x 屬性,提供 getx 方法名來獲取屬性。但是有一天你心血來潮,突然想對程式進行大改,可能你需要把 setx 和 getx 修改為 set_x 和 get_x,那你不得不修改使用者呼叫的介面,這樣子的體驗就非常不好。

有了 property() 所有問題就迎刃而解了,因為像上邊一樣,我們為使用者訪問 _x 屬性只提供了 x 屬性。無論我們內部怎麼改動,只需要相應的修改 property() 的引數,使用者仍然只需要去操作 x 屬性即可,對他們來說沒有任何影響。

各個內建函式舉例如下,可以促進對於它們的理解: