动态创建类实例代码


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对html代码进行escape编码的方法
May 04 Python
Python使用Scrapy爬取妹子图
May 28 Python
python中string模块各属性以及函数的用法介绍
May 30 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
Python读写文件模式和文件对象方法实例详解
Sep 17 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
python设置表格边框的具体方法
Jul 17 Python
Python控制鼠标键盘代码实例
Dec 08 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python实现剪贴板的操作
Jul 01 Python
python实现商品进销存管理系统
May 30 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.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
PHP排序算法类实例
2015/06/17 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
Node.js模块加载详解
2014/08/16 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
python实现智能语音天气预报
2019/12/02 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
飞利浦法国官网:Philips法国
2019/07/10 全球购物
质量工程师岗位职责
2013/11/16 职场文书
超市开店计划书
2014/04/26 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
四查四看整改措施
2014/09/19 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技
Java 死锁解决方案
2022/05/11 Java/Android
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS