动态创建类实例代码


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群发邮件实例代码
Jan 03 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
讲解Python中if语句的嵌套用法
May 14 Python
python版微信跳一跳游戏辅助
Jan 11 Python
python print 按逗号或空格分隔的方法
May 02 Python
python递归实现快速排序
Aug 18 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python解析yaml文件过程详解
Aug 30 Python
python模块导入的方法
Oct 24 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
php读取数据库信息的几种方法
2008/05/24 PHP
php多文件上传下载示例分享
2014/02/20 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python 12306抢火车票脚本
2018/02/07 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
个人自我评价分享
2013/12/20 职场文书
2014年检验员工作总结
2014/11/19 职场文书
紧急通知
2015/04/17 职场文书
爱心捐助活动总结
2015/05/09 职场文书
《比的意义》教学反思
2016/02/18 职场文书
信息技术课教学反思
2016/02/23 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
Redis可视化客户端小结
2021/06/10 Redis
聊聊redis-dump工具安装问题
2022/01/18 Redis