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