#demo.py中的程式
#!/usr/bin/env python
#coding:utf-8
deffoo
():print
"demo.foo"
#主程式
#!/usr/bin/env python
#coding:utf-8
str1 = 'demo'
str2 = 'foo'
module = __import__(str1) # == import demo
funk = getattr(module, str2)
#getattr相當於房戶戶demo模組中的foo函式
funk()
#可以看到getater就是找到foo函式,並且賦給funk函式。
結果:demo.foo
#account.py檔案
#!/usr/bin/env python
#coding:utf-8
#登入**相關檔案
deflogin
():print
'login'
deflogout
():print
'logout'
#index.py檔案
#!/usr/bin/env python
#coding:utf-8
from backend import account
data = raw_input("請輸入url:")
array = data.split('/')
if data == 'accout/login':
account.login()
elif data == 'account/logout':
account.logout()
#這裡我們的大型**如果有100個url是不是我們要寫100個if呢,這裡我們就可以用反射動態獲取。在下面介紹
#這裡admin.py和account.py都時我們url的乙個分頁面
#admin.py檔案
#!/usr/bin/env python
#coding:utf-8
defindex
():print
'歡迎登陸後台管理'
#account.py檔案
#!/usr/bin/env python
#coding:utf-8
#登入**相關檔案
deflogin
():print
'login'
deflogout
():print
'logout'
#index.py檔案
#!/usr/bin/env python
#coding:utf-8
data = raw_input("請輸入url:")
array = data.split('/')
userspance = __import__('backend.'+array[0])
model = getattr(userspance, array[0])
func = getattr(model, array[1])
#相當於先導入乙個資料夾,在資料夾中在匯入那個模組,在執行函式。
#這裡__import__ 相當於先導入import backend.account,然後在匯入模組,在執行login()函式,也就是跟正常的沒有區別,先import backend,然後backend.account,然後在backend.account.login
#這裡我們正常匯入模組時 import bachend.account ,執行的時候是使用backend.account.login(),所以我們這裡在使用兩次次getattr,這下應該差不多明白了
func()
#一次執行結果:
請輸入url:admin/index
歡迎登陸後台管理
go 反射應用
直接上 package main import fmt reflect type envkey struct func main 反射 s reflect.valueof t elem typeoft s.type 迴圈遍歷結構體,獲取各個元素的型別,值 for i 0 i s.numfield i...
go 反射應用
package main import fmt encoding json type monster struct func main data,json.marshal m fmt.println json result string data 輸出結果 json result 思考問題 為什麼序...
php反射應用場景 詳解php中反射的應用
反射是在php執行狀態中,擴充套件分析php程式,匯出或提取出關於類 方法 屬性 引數等的詳細資訊,包括注釋。這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為反射api。反射是操縱物件導向范型中元模型的api,其功能十分強大,可幫助我們構建複雜,可擴充套件的應用。其用途如 自動載入外掛程式,自動生...