高级配置方式

一 目录结构

image

二 程式代码

start.py

import os
os.environ['USER_SETTINGS'] = "config.settings"    # 设置环境变量

from lib.conf.config import settings

print(settings.__dict__)  # {'BBBB': 'bbbbb', 'AAAA': 'aaaaa', 'DDDD': 'ddddd', 'CCCC': 'ccccc'}

settings.py

"""
用户自定义配置文件
"""
CCCC = 'ccccc'
DDDD = 'ddddd'

global_settings.py

"""
内置配置文件
"""
AAAA = 'aaaaa'
BBBB = 'bbbbb'

config.py

import os
import importlib
from lib.conf import global_settings
# from config import settings

class Settings:
    """
    获取默认配置及自定义配置
    """
    def __init__(self):
        # 获取默认配置
        print(dir(global_settings))    # ['AAAA', 'BBBB', '__builtins__', '__cached__', '__doc__', '__file__', ...]
        for name in dir(global_settings):
            if name.isupper():
                value = getattr(global_settings,name)
                setattr(self,name,value)

        # 获取自定义配置,如与默认同名则覆盖
        settings_module = os.environ.get('USER_SETTINGS')
        if not settings_module:
            return
        user_settings = importlib.import_module(settings_module)
        for name in dir(user_settings):
            if name.isupper():
                value = getattr(user_settings,name)
                setattr(self,name,value)

settings = Settings()
posted @ 2018-03-28 10:13  Joe1991  阅读(145)  评论(0)    收藏  举报