需求:近一段时间基于django框架,开发各业务层监控代码,每个业务的监控逻辑不同,因此需要开发监控子模块,动态的导入调用。

项目名称: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 动态调用模块、类、方法(django项目)的更多相关文章

  1. python 动态调用模块&类&方法

    转载自:http://www.cnblogs.com/bluefrog/archive/2012/05/11/2496439.html 一直想知道python里有没有类似php中的 $classnam ...

  2. python有三种导入模块的方法(转)

    原文:http://www.cnblogs.com/allenblogs/archive/2011/11/15/2055149.html python有三种导入模块的方法 其一, import mod ...

  3. python子类调用父类的方法

    python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...

  4. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  5. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  6. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

  7. python 反射 动态导入模块 类attr属性

    1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去 ...

  8. 动态调用WebService 通用方法Moss 中 传统开发中都可用。

    WebService是啥大家都知道了,这里不做过多的解释.通常我们使用WebService的做法基本都是在我们的项目中添加Web引用的方式,首先找到WebService的地址,然后定义命名空间,这样会 ...

  9. Python 动态导入模块

    动态导入模块 目录结构: zhangsandeMacBook-Air:1110 zhangsan$ tree . . ├── lib │   └── aa.py ├── test1.py lib目录下 ...

随机推荐

  1. Sentinel-Redis高可用方案(一):主从复制

    引言 大概是因为Redis是个人开发的产品,所以Redis的高可用方案是被分成了几块来实现:主从复制.主从切换以及虚拟IP或客户端方案. 从Redis 2.8开始加入对Sentinel机制从而实现了服 ...

  2. Servicestack IRequestLogger获取 IHttpRequest

    我在 ServiceStack里实现了 Logging 中的请求与返回,同时我想在IRequestLogger.Log() 方法中获取 IHttpRequest . IRequestContext 并 ...

  3. position为absolute的元素如何实现居中

    当给div设置absolute时,该元素已经脱离文档流,呈现浮动状态,只能通过left,top,right,bottom来设置属性,要实现居中有两种方法: 一.css法 <div class=& ...

  4. 认真地搭建python开发环境

    面对不同python不同的版本以及各种各样的三方库,为了以后有必要学习一下怎样更好地搭建开发环境. python 2.7 作为控制台脚本 pycharm下: python 3.4 python 2.7 ...

  5. ViewHolder数据错乱BUG

    需求是这样的,在列表中用一个图标标示某个item是已经被接下或者完成的任务. 对于文件有这样的操作,进入列表后第一页面展示正常,但是加载更多后同样位置出现了同样的标志.这不是我想要的效果 我的解决办法 ...

  6. Oracle空串与null的处理

    来源于:http://blog.itpub.net/24870090/viewspace-1057853/ Oracle空串与null的处理[@more@] Oracle中的空字符串基本上是被当成空N ...

  7. 【BZOJ 4547】【HDU 5157】小奇的集合

    http://www.lydsy.com/JudgeOnline/problem.php?id=4547 本蒟蒻并不会矩乘求Fibonacci数列前缀和,所以果断分块打表,常数竟然比矩乘要小! PS: ...

  8. EPUBBuilder编辑器新版

    epub全称为Electronic Publication的缩写,意为:电子出版, epub于2007年9月成为国际数位出版论坛(IDPF)的正式标准,以取代旧的开放Open eBook电子书标准,e ...

  9. chrome 26.0.XXX版本下media query流媒体查询有问题的bug

    这段代码什么意思: @media only screen and (max-width: 1360px)  当用户的界面小于等于1360px的时候, 会加载该流媒体样式(此时的界面是包含滚动条的): ...

  10. jquery 设置焦点

    function CheckForm() { var classLevel = $("#classLevel").val(); var re = /^[1-9][0-9]*$/; ...