一、什么是反射
反射就是通過字符串的形式去對(duì)象(模塊)中操作(查找/獲取/刪除/添加)成員,一種基于字符串的事件驅(qū)動(dòng)可使用反射的地方:
1、反射類中的變量 : 靜態(tài)屬性,類方法,靜態(tài)方法2、反射對(duì)象中的變量、對(duì)象屬性、普通方法3、 反射模塊中的變量4、反射本文件中的變量
getattr(核心)
判斷類、對(duì)象或者模塊中是否有相應(yīng)的屬性或方法。用法:getattr(obj,str,default=None) 判斷obj中是否有str屬性,有就返回,沒有時(shí)有傳入第三參數(shù)就返回第三參數(shù),沒有就報(bào)錯(cuò)。
settattr
設(shè)置屬性。第三參數(shù)為新的屬性值
hasattr
判斷時(shí)候有某個(gè)屬性,有就返回True,沒有就返回False
delattr
刪除某個(gè)屬性
反射本文件
sys.modulses[__ name__]就是本文件對(duì)象。
二、使用場(chǎng)景
input:用戶輸入的如果是a,那么就打印1,如果輸入的是b就打印2
文件:從文件中讀出的字符串,想轉(zhuǎn)換成變量的名字
網(wǎng)絡(luò):將網(wǎng)絡(luò)傳輸?shù)淖址D(zhuǎn)換成變量的名字