阅 读 文 章

python中有没有类似java的 Class.forName()啊?

[来源:网上转载 (CSDN转载) | 作者:网友(guanliyuanjia) | 时间:2007-09-16 | 浏览:人次 ]

我正在用python实现一个自动化测试的框架。其中的测试用例由框架的使用者用python写。  
  一个测试用例大致是这样的:  
  ------------------------------------------  
  文件名:testcase1.py  
  ------------------------------------------  
  内容:  
  class   TestAddUser(BaseClass):  
  def   __init__(self):  
  pass  
   
  def   init(self):  
  pass  
   
  def   run(self):  
  pass  
   
  def   clean(self):  
  pass  
   
  ......  
  -------------------------------------------  
  框架希望能够实例化测试用例文件(对应于testcase1.py)中定义的类(对应于TestAddUser   ),文件名和类名都是用户自定义的,并通过一个xml配置文件告诉框架  
  python如何来实现这个功能?有没有类似   Java中的   Class.forName(String)   ?  
 
getattr(sys.modules[TestAddUser.__module__],   "TestAddUser")().run()
pdvv(我爱花猫)   ,类名是运行时才知道的
getattr返回的并非   TestAddUser   类的实例.  
  有没有知道module名和class名的字符串值后,获得该class的实例的函数啊?
如果类事例化不需要参数的话可以用eval,需要参数也可以,就是麻烦些.  
  a   =   eval("%s()"   %   cls_name)  
  #   a   is   the   instance   of   cls_name
我想这样调用,但是试过之后不成功,想再请教一下如何使用eval().  
  -----------------------------------------------  
  #文件   my_module.py:  
   
  class   MyClass:  
          def   func(self):  
                  print   'ok'  
  -----------------------------------------------  
  #文件   main.py:  
   
  from   my_module   import   *  
   
  #由于文件(模块)名和类名是运行时从配置文件获取的,所以必须是字符串  
  a   =   eval("%s"   %   "MyClass")        
   
  a.func()  
   
  -----------------------------------------------
问题解决了.  
   
  总结如下:  
  首先通过  
  getattr(sys.modules['moduleName'],   'className')  
  或者  
  eval('className')  
  来获取'类'的对象  
  然后通过new.instance(classObj)来实例化该类.  
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 类似 有没有 文件 eval def self class TestAddUser 实例

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.