我python-metar用来解码METAR数据.解析METAR字符串后返回的对象如下所示:
>>> dir(decoded)[-5:]
['wind_shift', 'wind_shift_time', 'wind_speed', 'wind_speed_peak', 'windshear']
Run Code Online (Sandbox Code Playgroud)
这些属性,还有其他方法- value(),unit()和string().我使用getattr()内置函数遍历所有这些:
>>> attributes = [..., 'wind_speed', 'wind_speed_peak', 'windshear']
>>> for attr in attributes:
>>> print(getattr(decoded, attr))
Run Code Online (Sandbox Code Playgroud)
但是这样我得到了默认的字符串表示,这是一个带有值及其单位的字符串,比如10 knots,虽然我想得到的数值,我可以通过value()方法得到:
>>> decoded.wind_speed.value()
10.0
Run Code Online (Sandbox Code Playgroud)
所以我无法想象如何使用getattr()并同时调用一个方法(在本例中为value()方法).
使用您的代码,getattr将返回到decoded.wind_speed.如果要调用value函数,则decoded.wind_speed必须value()使用对象返回调用getattr.
print(getattr(decoded, attr).value())
Run Code Online (Sandbox Code Playgroud)
要么
您可以使用另一个getattr来调用value方法.
print(getattr(getattr(decoded, attr)), "value")()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1664 次 |
| 最近记录: |