动态创建类实例代码


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实用日期时间处理方法汇总
May 09 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
iPython pylab模式启动方式
Apr 24 Python
django 外键创建注意事项说明
May 20 Python
Python实现哲学家就餐问题实例代码
Nov 09 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
js切换div css注意的细节
2012/12/10 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
python检测远程端口是否打开的方法
2015/03/14 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
wxPython中listbox用法实例详解
2015/06/01 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
python调用fortran模块
2016/04/08 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
Python多项式回归的实现方法
2019/03/11 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
django ajax发送post请求的两种方法
2020/01/05 Python
雷锋的观后感
2015/06/10 职场文书
董事长新年致辞
2015/07/29 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL