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])
作用:返回一個特定物件的屬性的特定值(前提是該物件具有該屬性)
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 屬性即可,對他們來說沒有任何影響。
各個內建函式舉例如下,可以促進對於它們的理解: