您的位置:首页 > 编程语言 > Python开发

Python动态模块加载

2018-03-28 20:41 441 查看
1.配置加载模块的config
config = {
"mod": {
"stock": {
"enabled": True,
},
"future": {
"enabled": True,
}
}
}
2.保存配置的环境
class Env(object):
_env = None
def __init__(self, config):
Env._env = self
self.config = config
3.加载模块处理
# -*- coding: utf-8 -*-
import copy
from collections import OrderedDict

class ModHandler(object):
def __init__(self):
self._env = None
self._mod_list = list()
self._mod_dict = OrderedDict()

def set_env(self, environment):
self._env = environment

config = environment.config

for mod_name in config['mod']:
if config['mod'][mod_name]['enabled'] == False:
continue
self._mod_list.append(mod_name)

def start_up(self):
for mod_name in self._mod_list:
print('动态加载模块:')
print(mod_name)
#self._mod_dict[mod_name].start_up(self._env, mod_config)
   4.模拟2个子模块(stock和future)



5.测试模块加载
from Env import Env, config
from Mod import ModHandler
def test():
#加载config到env
env = Env(config)
#启动加载模块
mod = ModHandler()
#加载模块中注入config
mod.set_env(env)
#启动加载
mod.start_up()
test()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: