1. 程式人生 > >python--反射機制

python--反射機制

print obj import not HA true set 模塊名 else

  python的反射機制能夠讓我們利用字符串去動態的驅動不同的事件,例如導入模塊,調用函數等,涉及到的函數有hasattr,getattr,setattr,delattr

  • hasattr:檢查模塊或者對象中是否有某個成員
  • getattr:獲取成員,即將字符串輸入的數據裝換成對應的成員
  • setattr:設置成員
  • delattr:刪除成員  
技術分享圖片
 1 modName=input("請輸入模塊名:")
 2 #__import__:根據字符串輸入的模塊名導入相對應得模塊,如果有嵌套的模塊,需要加fromlist=True
 3 name=__import__(se.+modName,fromlist=True)
4 5 print(modName) 6 7 funcName=input("請輸入函數名:") 8 9 #檢查模塊中是否相對應得函數 10 exis=hasattr(name,funcName) 11 12 if exis: 13 #獲得函數 14 fun=getattr(name,funcName) 15 #執行函數 16 fun() 17 #獲得變量 18 value=getattr(name,"PYTHON") 19 print(value) 20 else: 21 print("not find") 22
23 #設置 24 setattr(name,"NAME","LINUX") 25 print(hasattr(name,"NAME")) 26 #刪除 27 delattr(name,"PYTHON") 28 print(hasattr(name,"PYTHON"))
反射 技術分享圖片
 1 modName=input("請輸入模塊名:")
 2 #__import__:根據字符串輸入的模塊名導入相對應得模塊,如果有嵌套的模塊,需要加fromlist=True
 3 name=__import__(se.+modName,fromlist=True)
 4 
 5 className=input("
請輸入類名:") 6 #將模塊中的類導入 7 cls=getattr(name,className) 8 #創建該類的一個實例 9 clsObj=cls() 10 #添加該對象的一個字段 11 clsObj.PYTHON="sdfsfdsf" 12 funcName=input("請輸入函數名:") 13 14 #檢查類中是否相對應得函數 15 exis=hasattr(clsObj,funcName) 16 17 if exis: 18 #獲得該對象的函數 19 fun=getattr(clsObj,funcName) 20 #執行該對象的函數 21 fun() 22 #獲得該對象的變量 23 value=getattr(clsObj,"PYTHON") 24 print(value) 25 else: 26 print("not find") 27 28 #設置 29 setattr(clsObj,"NAME","LINUX") 30 print(hasattr(clsObj,"NAME")) 31 #刪除該對象相對應的變量,如果該變量是屬於類的,那麽就會出錯 32 delattr(clsObj,"PYTHON") 33 print(hasattr(clsObj,"PYTHON"))
反射二

python--反射機制