全部博文(135)
分类:
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_html、output_xml 和 output_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>