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)

4.执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值