python 动态调用模块、类、方法(django项目)
2016-10-13 08:46
701 查看
需求:近一段时间基于django框架,开发各业务层监控代码,每个业务的监控逻辑不同,因此需要开发监控子模块,动态的导入调用。
项目名称:demo_django
App:common_base、monitor_master
监控子模块:demo_django/common_base/modules/classname.py
备注:模块名与类名相同
动态应用模块:demo_django/common_base/module_partiton.py
参考:http://www.cnblogs.com/bluefrog/archive/2012/05/11/2496439.html
项目名称:demo_django
App:common_base、monitor_master
监控子模块:demo_django/common_base/modules/classname.py
# -*- coding: utf-8 -*- class classname(object): def mod1(self): print "mod1" def mod2(self): print "mod2"
备注:模块名与类名相同
动态应用模块:demo_django/common_base/module_partiton.py
def test(): clsname = "classname" method = "mod1" importmodule = LazyImport("monitor_base.modules." + clsname, clsname) # 导入classname模块 is_true = hasattr(importmodule, clsname) # 检查classname类是否在classname模块中 if is_true: classname = getattr(importmodule, clsname) obj = classname(self.hostlist, self.way) # 实例化classname类 mtd = getattr(obj,method) mtd() # 调用mod1方法 class LazyImport(object): """ 动态导入模块 """ def __init__(self, module_name, module_class): """ :param module_name: :param module_class: :return: 等同于 form module_name import module_class """ self.module_name = module_name self.module_class = module_class self.module = None def __getattr__(self, name): if self.module is None: self.module = __import__(self.module_name, fromlist=[self.module_class]) return getattr(self.module, name) if __name__ == '__main__': test()
参考:http://www.cnblogs.com/bluefrog/archive/2012/05/11/2496439.html
相关文章推荐
- python 动态调用模块&类&方法
- [python]python 动态调用模块&类&方法
- python利用字典保存配置实现动态调用模块类方法
- Python 动态加载模块的3种方法
- 根据字符串名称动态调用Python的函数和对象方法
- scrapy一些非常实用资料整理,与其他mongdb、django、redis、solr、tor结合使用以及用Python脚本调用等等方法
- 不安装python运行python文件或者是用其他语言调用python模块的方法
- python调用java模块SmartXLS和jpype修改excel文件的方法
- python项目内import其他内部package的模块的正确方法
- 分配模块、通配符和动态方法调用
- 对Python的Django框架中的项目进行单元测试的方法
- 在Python的Django框架中调用方法和处理无效变量
- python动态加载模块及变量是否存在方法
- python调用C模块的方法
- python下面通过ctypes模块调用c++库的方法
- 在Python的Django框架中调用方法和处理无效变量
- python中动态加载模块和类方法实现
- django+python项目数据库保存中文报错解决方法
- Python动态加载模块的3种方法
- 手把手教你:win7下的python+django项目移植到虚拟机的Ubuntu下网页无法显示的解决方法