Python 類反射機制,類名路徑例項化物件

2021-10-07 05:11:15 字數 1339 閱讀 3774

說明

反射就是通過字串的形式,匯入模組;通過字串的形式,去模組尋找指定函式,並執行。利用字串的形式去物件(模組)中操作(查詢/獲取/刪除/新增)成員,一種基於字串的事件驅動。

反射功能的實現,由這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類與反射

目錄 物件導向程式設計與面向過程程式設計 定義類例項化物件 屬性查詢 繫結給物件的方法 反射面向過程 核心是過程二字,過程指的是解決問題的步驟,即先幹什麼再幹什麼 基於該思想編寫程式就好比在設計一條流水線 物件導向 核心是物件二字,物件指的是特徵與技能的結合體,基於該思想編寫程式就好比在創造乙個世界...