如何在python项目中写出像Django中一样功能的settings

一  核心文件目录结构

 

二  实现代码

resdme:
  在实现此功能主要用到的知识点及模块:
  1.反射
  3.内置方法dir
# 全局配置
NAME = 'root'
# 用户配置
NAME = 'personal'
from lib.conf import global_settings  # 全局默认配置
from config import setting  # 用户个人配置

class Settings():
    '''
    需要注意的是:
        1.在初始化的时候要将全局的配资放在个人的前面
        2.因为如果使个人的配置的权限高于全局的配置是需要将个人的放在全局的后面将其覆盖
    '''
    def __init__(self):
        # 默认全局的配置
        self.setSttr(global_settings)
        # 个人的配置
        try:
            self.setSttr(setting)
        except Exception as e:
            print('您要的配置信息不存在')

    def setSttr(self, conf):
        for key in dir(conf):
            if key.isupper():
                v = getattr(conf, key)
                setattr(self, key, v)
settings
= Settings()

在setting中取值:

from config import setting
name = setting.NAME
print(name)

# 显示结果
'''
personal
'''

 

posted @ 2019-01-09 20:18  zhaijihai  阅读(360)  评论(0编辑  收藏  举报