我使用python-metar
来解码METAR数据。解析METAR字符串后返回的对象如下所示:
>>> dir(decoded)[-5:]
['wind_shift', 'wind_shift_time', 'wind_speed', 'wind_speed_peak', 'windshear']
这些属性还有其他方法 - value()
,unit()
和string()
。
我使用getattr()
内置函数来遍历所有这些函数:
>>> attributes = [..., 'wind_speed', 'wind_speed_peak', 'windshear']
>>> for attr in attributes:
>>> print(getattr(decoded, attr))
但是这样我得到了默认的字符串表示,这是一个带有值及其单位的字符串,如10 knots
,而我想得到的数值,我可以通过{ {1}}方法:
value()
所以我无法弄清楚如何使用>>> decoded.wind_speed.value()
10.0
并同时调用方法(在本例中为getattr()
方法)。
答案 0 :(得分:5)
使用您的代码,getattr
将返回decoded.wind_speed
。如果您要调用value
的{{1}}函数,则必须使用decoded.wind_speed
返回的对象调用value()
。
getattr
或强>
您可以使用其他print(getattr(decoded, attr).value())
来调用getattr
方法。
value