首页 > 后端开发 > Python教程 > 动态创建类实例代码

动态创建类实例代码

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-06 11:26:44
原创
1036 人浏览过

例如:
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

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
angular.js - angular2动态创建子组件思路
来自于 1970-01-01 08:00:00
0
0
0
javascript - 动态创建对象,动态加数据
来自于 1970-01-01 08:00:00
0
0
0
向动态创建的元素添加不同的类
来自于 1970-01-01 08:00:00
0
0
0
如何从数组动态创建表?
来自于 1970-01-01 08:00:00
0
0
0
PHP 中的动态属性创建已被弃用:警告
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板