动态创建类实例代码


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 pickle模块用法实例
Apr 14 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
python常用知识梳理(必看篇)
Mar 23 Python
python 自动去除空行的实例
Jul 24 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
Python中bisect的用法
2014/09/23 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python多进程使用函数封装实例
2020/05/02 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
Haggar官网:美国男装品牌
2020/02/16 全球购物
什么是Rollback Segment
2013/04/22 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
结婚喜宴主持词
2014/03/14 职场文书
房屋委托书范本
2014/04/04 职场文书
基层党员对照检查材料
2014/08/25 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014年化验员工作总结
2014/11/18 职场文书
优秀员工推荐材料
2014/12/20 职场文书
集结号观后感
2015/06/08 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python