自學Python:python面向對象編程中一些相關的BIF

issubclass(class, classinfo)

如果第一個參數(class)時第二個參數(classinfo)的一個子類,則返回True,否則返回False
(1)一個類被認爲是其自身的子類。
(2)classinfo可以是類對象組成的元組,只要class是其中一個候選類的子類,則返回True。
(3)在其他情況下,會拋出一個TypeError異常。
在這裏插入圖片描述

isinstance(object, classinfo)

如果第一個參數(object)是第二個參數(classinfo)的實例對象,則返回True,否則返回False
(1)如果object是classinfo的子類的一個實例,也符合條件。
(2)如果第一個參數不是對象,則永遠返回False。
(3)classinfo可以是類對象組成的元組,只要object是其中任何一個候選類的實例對象,則返回True。
(4)如果第二個參數不是類或者由類對象組成的元組,會拋出一個TypeError異常。
在這裏插入圖片描述

hasattr(object, name)

attr即attribute的縮寫,屬性的意思。下面的幾個BIF都是跟對象的屬性有關係的,例如這個hasattr()的作用就是測試一個對象裏是否有指定的屬性。
第一個參數(object)是對象,第二個參數(name)是屬性名(字符串形式):

在這裏插入圖片描述

setattr(object, name, value)

與getattr()對應,setattr()可以設置對象中指定屬性的值,如果指定的屬性不存在,則會新建屬性並賦值。
在這裏插入圖片描述

delattr(object, name)

與setattr()相反,delattr()用於刪除對象中指定屬性的值,如果屬性不存在,則拋出AttributeError異常。
在這裏插入圖片描述

property(fget = None, fset = None, fdel = None, doc = None)

property的作用是通過屬性來設置屬性,具體還是看操作吧

property()返回一個可以設置屬性的屬性,當然如何設置屬性的方法還是需要自己來寫代碼。在類中定義好設置屬性的方法,然後使用property將這些方法彙總並返回一個屬性,用實例對象調用這個屬性就可以就可以對方法所控制的屬性進行各種操作,那上面的例子來說,首先在類中定義了size屬性,然後定義了各種設置size屬性的方法,最後使用property()將這些方法彙總並返回一個x屬性,使用實例對象調用x屬性就可以完成對size屬性的各種操作,在實際中有什麼用呢,如果你有一天需要對程序進行修改,就可能需要把getSize與setSize方法名修改爲getXSize與setXSize,因爲是下一個版本了嘛,這時就不得不修改用戶調用接口,如果程序需要頻繁修改,那這樣其不是特別麻煩。
有了property(),這種問題就不需要擔心了,向上面一樣,爲用戶訪問size屬性只提供了x屬性,無論內部怎樣改動,只需要修改property()中的參數,也就是修改過後的方法名,用戶仍然使用x屬性去進行各種操作,沒有任何影響。

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