动态创建类实例代码


Posted in Python onOctober 07, 2009

例如:
import mymodule
myobject = mymodule.myclass()
或者
from mymodule import myclass
myobject = myclass()

如果要在程序中动态地创建类实例,也一样要分两步走,例如:
m = __import__('mymodule')
c = getattr(m, 'myclass')
myobject = c()

但是要注意:如果myclass并不在mymodule的自动导出列表中(__all__),则必须显式地导入,例如:
m = __import__('mymodule', globals(), locals(), ['myclass'])
c = getattr(m, 'myclass')
myobject = c()

若要封装的规范一些,可以这样来做:
Code

class Activator: 
'''本类用来动态创建类的实例''' 
@staticmethod 
def createInstance(class_name, *args, **kwargs): 
'''动态创建类的实例。 
[Parameter] 
class_name - 类的全名(包括模块名) 
*args - 类构造器所需要的参数(list) 
*kwargs - 类构造器所需要的参数(dict) 
[Return] 
动态创建的类的实例 
[Example] 
class_name = 'knightmade.logging.Logger' 
logger = Activator.createInstance(class_name, 'logname') 
''' 
(module_name, class_name) = class_name.rsplit('.', 1) 
module_meta = __import__(module_name, globals(), locals(), [class_name]) 
class_meta = getattr(module_meta, class_name) 
object = class_meta(*args, **kwargs) 
return object
Python 相关文章推荐
简单实现python爬虫功能
Dec 31 Python
Python生成密码库功能示例
May 23 Python
利用aardio给python编写图形界面
Aug 21 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
python按比例随机切分数据的实现
Jul 11 Python
Django REST framework内置路由用法
Jul 26 Python
Python with语句和过程抽取思想
Dec 23 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
Python实现动态循环输出文字功能
May 07 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Python数据可视化之绘制柱状图和条形图
May 25 Python
Python 文件操作实现代码
Oct 07 #Python
Python 第一步 hello world
Sep 25 #Python
Python 字符串定义
Sep 25 #Python
Python 流程控制实例代码
Sep 25 #Python
Cython 三分钟入门教程
Sep 17 #Python
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 #Python
PHP webshell检查工具 python实现代码
Sep 15 #Python
You might like
php date与gmdate的获取日期的区别
2010/02/08 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
JS实现页面打印(整体、局部)
2017/08/18 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
高中数学教学反思
2014/01/30 职场文书
学校十一活动方案
2014/02/01 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
创业计划书之寿司
2019/07/19 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS