python 通過反射獲取配置檔案 中的類

2021-09-05 07:21:04 字數 1542 閱讀 5022

首先目錄結構,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...