首先目錄結構,conf資料夾的settings.py配置檔案中配置兩個類路徑,寫一段程式讀取這個配置檔案,並將類路徑例項化成物件執行相關功能..
1.配置檔案 settings.py:
mode = "raylu"
func =
2.配置檔案中配置的兩個類customer和sales檔案
class customer(object):
def __init__(self):
pass
def run(self):
print("")
return "i am customer"
class sales(object):
def __init__(self):
pass
def run(self):
print("")
return "i am sales"
3.讀取配置檔案內容,並通過反射方式例項化類物件
# import sys,os
# curpath = os.path.abspath(os.path.dirname(__file__))
# rootpath = os.path.split(curpath)[0]
# print(rootpath)
from reflect.conf.settings import func
from reflect.conf.settings import mode
import importlib,re
print(mode)
for k,v in func.items():
## ret_v = v.split(".")
# ret=ret_v[0]
# cls_name = ret_v[-1]
# for item in range(1,len(ret_v)-1):
# ret+= "."+ret_v[item]
#上面**簡寫:
ret,cls_name = v.rsplit(".",maxsplit=1) # rsplit()從最後邊開始往前分割 #splitlines()通過換行符進行分割
print(ret,cls_name)
m = importlib.import_module(ret) #匯入檔案模組
cls = getattr(m,cls_name) #通過getattr()獲取模組內容,獲取類名
response = cls().run() #建立類物件並執行物件函式,獲取想要的結果
print(response)
4.執行結果:
反射 通過反射獲取類的完整結構
獲取執行時類的屬性 public class testfields 2 getdeclaredfields 能夠獲取執行時類本身中宣告的所有屬性 field fields1 clazz.getdeclaredfields for field f fields1 許可權修飾符,變數型別,變數名 獲取屬...
Android中通過反射獲取資源Id
在將自己寫的工具打成.jar包的時候,有時候會需要引用到res中的資源,這時候不能將資源一起打包,只能通過反射機制動態的獲取資源.特別用在自己定義乙個工具將其打成.jar包時,特別注意資源的獲取 1 封裝成乙個工具類 package com.cp.utils import android.conte...
Android中通過反射獲取資源Id
在將自己寫的工具打成.jar包的時候,有時候會需要引用到res中的資源,這時候不能將資源一起打包,只能通過反射機制動態的獲取資源.特別用在自己定義乙個工具將其打成.jar包時,特別注意資源的獲取 1 封裝成乙個工具類 package com.cp.utils import android.conte...