Python之反射—第十六天

1、反射定義:
主要指程序可以訪問、檢測、修改它本身狀態的一種能力(類比自省),這一概念的提出很快引發了計算機科學領域關於應用反射性的研究,它首先被程序語言的設計所採用,並在Lisp和麪向對象方面取得了成就

=2、四個可以實現自省的函數:=

(1)判斷object中有沒有name字符串對應的方法和屬性,name可以是函數也可以是參數,還可以是變量,返回結果爲True、False

 hasattr(object,name)

(2)獲取name屬性,如果沒有會報錯,但是添加default屬性後,沒有name會直接打印default值

 getattr(object,name,default=None)

#舉例:
print(getattr(test,"fsjhsdgsg","沒有該屬性"))

#輸出結果:
沒有該屬性

(3)設置屬性對象的屬性,還可以直接修改當前對象的屬性

 setattr(x,y,v)

#舉例:
setattr(test,"a",True)
print(test.__dict__)

#輸出結果:
顯示test的對象屬性,其中包含{"a":True}

(4)刪除對象屬性

 delattr(x,y)

#舉例
delattr(test,"a")
print(test.__dict__)

#輸出結果:
此時是沒有{“a”:True}這個屬性值的了

3、爲什麼要用反射
A和B兩個人同時寫代碼完成一個功能,A需要調用B的類,但是B有事請假了,類還沒有完成,這時候A就可以使用反射機制完成自己的代碼。使用反射的好處就是可以事先定義好接口,接口只有被完成纔會真正執行,這實現了即插即用。即事先把主要的邏輯寫好,後期再實現接口的功能。

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