动态创建类实例代码


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 logging模块学习笔记
May 24 Python
pycharm 使用心得(三)Hello world!
Jun 05 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
Python中内置的日志模块logging用法详解
Jul 12 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
使用python对excle和json互相转换的示例
Oct 23 Python
python能做什么 python的含义
Oct 12 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python Unittest原理及基本使用方法
Nov 06 Python
pandas按条件筛选数据的实现
Feb 20 Python
python获取对象信息的实例详解
Jul 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+mysql留言本源码
2009/11/11 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
python实现文件分组复制到不同目录的例子
2014/06/04 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
详解Python字符串切片
2019/05/20 Python
python中web框架的自定义创建
2019/09/08 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Tensorflow累加的实现案例
2020/02/05 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
师范生的个人求职信范文
2014/01/04 职场文书
清洁工表扬信
2014/01/08 职场文书
安全例会汇报材料
2014/08/23 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
运动会宣传稿100字
2015/07/23 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
Python如何导出导入所有依赖包详解
2021/06/08 Python
React如何创建组件
2021/06/27 Javascript
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS