python的getattr内置函数简直太强大了,它提供了从函数名字符串到函数引用的映射,实现机制为字符串和函数的松耦合。这有什么好处呢?
例如有一个功能需求是温度转换,即通过得到的传感器类型调用相应的温度转换函数,若是用python的话那就相当容易和简洁了,例如tempConvert模块定义了光纤传感器和无线传感器温度转换函数为convert_fiber和convert_wireless。
import tempConvert
def convert(primalData, sensortype="fiber"):
processFunc = getattr(tempConvert, "convert_%s" % sensortype)
return processFunc(primalData)
这样每添加一种类型的传感器,只要在temConvert模块中定义一个相应的转换函数就行了。相较之下C/C++就麻烦许多了,无法从字符串获取到该函数指针/引用。