反射的基本介紹

2022-08-23 09:00:11 字數 1917 閱讀 6743

反射:通過字串的形式匯入模組,通過字串的形式去模組中尋找指定函式、字段、全域性變數等

根據使用者輸入的內容匯入模組

由以下四個內建函式提供:hasattr、getattr、setattr、delattr,改四個函式分別用於對物件內部執行:檢查是否含有某成員、獲取成員、設定成員、刪除成員。

classfoo(object):

def__init__(self):

self.name='wupeiqi'

deffunc(self):

return'func'

obj=foo()

# #### 檢查是否含有成員 ####

hasattr(obj,'name')

hasattr(obj,'func')

# #### 獲取成員 ####

getattr(obj,'name')

getattr(obj,'func')

# #### 設定成員 ####

setattr(obj,'age',18)

setattr(obj,'show',lambdanum: num+1)

# #### 刪除成員 ####

delattr(obj,'name')

delattr(obj,'func')

******************************=

from lib import account

#模組名/函式名

#account/login

url = input('請輸入url:')

target_module, target_func = url.split('/')

m = __import__("lib" +targrt_module, fromlist=true)

if hasattr(account,inp):

target_func = getattr(account,inp)

r = target_func()

print(r)

else:

print('404')

反射機制的介紹

反射機制 程式在執行的過程中載入 一些 只知道相關名字 的類,以下 在程式執行時載入user類。class c class forname com.bjsxt.reflect.user 乙個類被載入後,jvm會建立乙個對應類的class物件,類的整個結構資訊會被放到class物件中。這個class物...

反射詳細介紹

眾所周知,獲取物件中的class物件有三種 注意 class物件的建立和載入只執行一次 開發中最受青睞 foename 因為foename擴充套件性好,靈活度高,我們程式設計師往往不想把 寫死,所有我們就利用forname方法的引數來進行多次運用,我們可以將字串放在檔案裡,利用io流技術讀取到之後放...

反射的基本用法

最近看spring原始碼,突然發現有好多地方都用到了反射,特此來回顧一下 先來建立userinfo基礎類 public class userinfo private userinfo string name,integer age,string shool public userinfo strin...