黑马程序员技术交流社区
标题:
python 通过反射获取配置文件 中的类
[打印本页]
作者:
lalah
时间:
2019-7-28 14:16
标题:
python 通过反射获取配置文件 中的类
首先目录结构,conf文件夹的settings.py配置文件中配置两个类路径,写一段程序读取这个配置文件,并将类路径实例化成对象执行相关功能.
1.配置文件 settings.py:
MODE = "RAYLU"
FUNC = {
"customer":"src.customer.Customer",
"sales":"src.sales.Sales",
}
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)
# sys.path.append(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)
作者:
柠檬leung不酸
时间:
2019-7-29 10:21
棒~
作者:
柠檬leung不酸
时间:
2019-7-29 10:21
作者:
柠檬leung不酸
时间:
2019-7-31 15:12
作者:
柠檬leung不酸
时间:
2019-8-1 18:07
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2