在getattr()函数

时间:2016-02-19 05:26:48

标签: python python-3.x

我使用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()方法)。

1 个答案:

答案 0 :(得分:5)

使用您的代码,getattr将返回decoded.wind_speed。如果您要调用value的{​​{1}}函数,则必须使用decoded.wind_speed返回的对象调用value()

getattr

您可以使用其他print(getattr(decoded, attr).value()) 来调用getattr方法。

value