Python基礎:反射
阿新 • • 發佈:2018-02-23
-s strip als class bar color 定義 object left 反射就是根據提供的字符串,匹配對象(類、模塊等)裏面的方法。達到動態調用的目的。
主要有四個成員。getattr、hasattr、setattr、delattr 獲取成員、檢查成員、設置成員、刪除成員
'''一個簡單的例子''' # 定義一個symbol類,有a,b,c三個方法。 class Symbol(object): def a(): pass def b(): pass def c(): pass # 輸入方法名,執行對應方法。 S = Symbol() method = input('input method name:').strip() if hasattr(Symbol,method): # 判斷是否存在輸入的方法名 getattr(Symbol,method) # 如果存在則運行方法 else: print("Error!Not Found!")
下面是使用__import__導入模塊的例子:
相同目錄導入
import commons
__import__('commons')
多層目錄導入
from list.text import commons
__import__(' list.text.commons',fromlist=True) #如果不加上fromlist=True,只會導入list目錄
而在使用的時候也可以動態輸入模塊名!
def main(): imp = input('input model name:') # 輸入模塊名 med = input('input method name:') # 輸入方法名 print(imp ,med ) try: obj = __import__(imp ) #導入該模塊 print(obj) if hasattr(obj,med): #判斷有沒有這個方法 fuc = getattr(obj,med) #獲得這個方法 fuc() else: print('Error not found method!') except: print('Error not found model!') if __name__ == '__main__': main()
以上就是常見用法了。
Python基礎:反射