Chinaunix首页 | 论坛 | 博客
  • 博客访问: 480168
  • 博文数量: 135
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 1441
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-05 20:39
文章分类
文章存档

2012年(2)

2011年(130)

2009年(2)

2008年(1)

我的朋友

分类:

2011-08-16 14:11:41

 

python中通过同名字符串调用函数

2011年3月25日

15:03

场景:最近遇到这样一个问题,在一个类里面有很多方法,只知道方法的名字如何调用该方法。

解决办法:

C语言:switch case。需要判断很多次,缺点代码很冗余。

C#:反射机制可以得到类的元信息,包括类的属性和方法。缺点方法中参数作为传出参数的时候需要特别指定parameters_modification,并且传入的参数需要装箱成object类型。

python:getattr函数就可以搞定。

例如,让我们假设有一个以 HTML、XML 和普通文本格式打印站点统计的程序。输出格式在命令行中指定,或者保存在配置文件中。statsout 模块定义了三个函数:output_htmloutput_xmloutput_text。然后主程序定义了唯一的输出函数,如下:

例 4.12. 使用getattr 创建分发者

import statsout

def output(data, format="text"):                             
    output_function = getattr(statsout, "output_%s" % format)
    return output_function(data)          

 

参考资料: 

 

Pasted from <http://hi.baidu.com/luotuo512/blog/item/9bc1bd951887d841d0135ea5.html>

 

阅读(1800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~