动态创建类实例代码


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爬虫之HTTP异常处理
Nov 05 Python
介绍Python中的fabs()方法的使用
May 14 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
面向对象学习之pygame坦克大战
Sep 11 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
python实现学生管理系统开发
Jul 24 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
python实现逻辑回归的示例
Oct 09 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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在线代理转向代码
2012/05/05 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python实现合并两个数组的方法
2015/05/16 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
英文翻译的自我评价语句
2013/10/04 职场文书
综合素质的自我鉴定
2013/10/07 职场文书
合伙协议书
2014/04/23 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
关于旅游的活动方案
2014/08/15 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
生日赠语
2015/06/23 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书