动态创建类实例代码


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实现2014火车票查询代码分享
Jan 10 Python
python rsa 加密解密
Mar 20 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
学生信息管理系统python版
Oct 17 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
python中如何使用分步式进程计算详解
Mar 22 Python
python实现FTP循环上传文件
Mar 20 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
Python实现简单多线程任务队列
2016/02/27 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
性能服装:HYLETE
2018/08/14 全球购物
人事科岗位职责范本
2014/03/02 职场文书
公司投资建议书
2014/05/16 职场文书
迎国庆横幅标语
2014/10/08 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
升职感谢信
2015/01/22 职场文书
乌镇导游词
2015/02/02 职场文书
新生开学寄语大全
2015/05/28 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技