动态创建类实例代码


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动态加载模块的3种方法
Nov 22 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
Sanic框架安装与简单入门示例
Jul 16 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
python爬虫爬取图片的简单代码
Jan 18 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
Python list列表删除元素的4种方法
Nov 01 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的历史和优缺点
2006/10/09 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
Python教程之全局变量用法
2016/06/27 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python实现常见的回文字符串算法
2018/11/14 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
详解Python self 参数
2019/08/30 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
python 写一个文件分发小程序
2020/12/05 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
总经理助理的八要求
2013/11/12 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
个人工作决心书
2015/09/22 职场文书
小学毕业教师寄语
2019/06/21 职场文书
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers