說明
反射就是通過字串的形式,匯入模組;通過字串的形式,去模組尋找指定函式,並執行。利用字串的形式去物件(模組)中操作(查詢/獲取/刪除/新增)成員,一種基於字串的事件驅動。
反射功能的實現,由這4個內建函式來實現(hasattr, getattr, setattr, delattr)。
函式名說明
getattr(object, attr[, default])
獲取指定字串名稱的物件屬性或方法,如果物件有該屬性則返回屬性值,如果有該方法則返回該方法的記憶體位址
hasattr(object, attr)
判斷指定字串名稱的物件是否有該屬性或方法,返回true或false
setattr(object, attr, value)
為指定字串名稱的物件設定屬性,如果物件已有該屬性則覆蓋屬性值,如果沒有該屬性則新增屬性並賦值
delattr(object, attr)
刪除指定字串名稱的物件的某屬性
類名路徑例項化物件
目錄結構
importlib
是python的乙個庫,通過匯入importlib,呼叫import_module()方法,傳入使用者想要獲取的模組對應的路徑字串,即可獲取乙個,模組module,module可以呼叫這個模組下的所有屬性和方法
import importlib
if __name__ ==
'__main__'
: model_path =
'source.processor.my_processor'
clz_name =
'myprocessor'
m = importlib.import_module(model_path)
clz =
getattr
(m, clz_name)
obj = clz(
)# 例項化物件
obj.run(
'jack'
)# hello world, my name is jack
反射機制傳遞類
鑑於某人說delphi的反射不能傳入或傳出類,我在此糾正一下這個說法,下面的 可以證實,類可以傳入傳出。由於我已經把d2009的反射單元移去d2007,因此就不用d2009了,所以 中暫時不考慮unicode的問題。unit unit1 inte ce uses windows,messages,s...
C 反射 通過類名建立類例項
反射 其實就是利用程式集的元資料資訊。反射可以有很多方法,編寫程式時請先導入 system.reflection 命名空間。2 若要反射當前專案中的類 即當前專案已經引用它了 可以為 3 也可以為 參考 反射幫助類 public static class reflectionhelper 建立物件例...
python類與反射
目錄 物件導向程式設計與面向過程程式設計 定義類例項化物件 屬性查詢 繫結給物件的方法 反射面向過程 核心是過程二字,過程指的是解決問題的步驟,即先幹什麼再幹什麼 基於該思想編寫程式就好比在設計一條流水線 物件導向 核心是物件二字,物件指的是特徵與技能的結合體,基於該思想編寫程式就好比在創造乙個世界...