反射:通過字串的形式匯入模組,通過字串的形式去模組中尋找指定函式、字段、全域性變數等
根據使用者輸入的內容匯入模組
由以下四個內建函式提供:hasattr、getattr、setattr、delattr,改四個函式分別用於對物件內部執行:檢查是否含有某成員、獲取成員、設定成員、刪除成員。
class
foo(
object
):
def
__init__(
self
):
self
.name
=
'wupeiqi'
def
func(
self
):
return
'func'
obj
=
foo()
# #### 檢查是否含有成員 ####
hasattr
(obj,
'name'
)
hasattr
(obj,
'func'
)
# #### 獲取成員 ####
getattr
(obj,
'name'
)
getattr
(obj,
'func'
)
# #### 設定成員 ####
setattr
(obj,
'age'
,
18
)
setattr
(obj,
'show'
,
lambda
num: 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...