源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

动态创建类实例代码

  • 时间:2020-04-05 14:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:动态创建类实例代码
例如: 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
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部