反射到底是個啥?
反射這個詞從邏輯上來說和倒影是差不多的,從一個3D的立體變成一個二維的平面影像,其實但從這個上面就已經可以理解在編程中反射是干啥用的了。
用官方的話說"反射主要是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力"。
其實本質上簡單說,就是把一個對象類型拆解。可以使用字符串的形式去訪問和修改對象。
為什么要使用反射?他幫我們解決了什么問題?
首先有反射那么就有"正射"。
正常情況下是導入模塊,找到想要的類,再創建實例對象,接著再調用方法,這個方法太麻煩了,一個程序不停的運行,所需要的功能不斷增多,不可能手動去一一導入,而且還需要程序去進行判斷某個模塊功能是否變動,這種情況必須只能是使用反射了。
這也是為什么很多框架是必須使用反射的原因了,因為反射幫助他們提供了一下幾點能力。
1.能夠用字符串的形式去操作對象,提高了程序的靈活性和擴展性。
2.降低了耦合性,提升了代碼的健壯性和自適應能力。
3.這種形式可以應對任何類的對象。
那么反射怎么使用呢?
Python/ target=_blank class=infotextkey>Python的內置函數提供了強大的反射機制,
__import__()加載模塊
dir()列表形式返回屬性和方法
hasattr()檢測是否含有某屬性
getattr()獲取屬性
setattr()設置屬性
delattr()刪除屬性
首先創建一個文件say.py并再其中聲明一個類say,創建一個sayLove方法。
接著再另一個文件中使用__import__以字符串形式導入模塊,讀取其中的say類。