您可以在Python函数中将对象的属性名称作为字符串传递吗? (cryptowatch API)

时间:2020-05-21 22:41:22

标签: python

我正在使用cryptowatch的SDK https://github.com/cryptowatch/cw-sdk-python进行API调用。我尝试检索的数据存储为对象的属性。根据时间范围,此属性的名称有所不同。

例如如果我们要请求每日比特币数据(“ 1d ”时间范围),则可以通过调用object属性来检索它,如下所示:object.of_ 1d

如果我们需要每周的比特币数据(“ 1w ”时间范围),则可以通过调用object属性来检索它,如下所示:object.of_ 1w

我正在尝试编写一个函数,该函数根据您指定为参数的时间段来调用市场数据,如下所示:

def get_price_action(exchange, market, timeframe):
    candles=cw.markets.get("{}:{}".format(exchange, market)
                           , ohlc=True
                           , periods=["{}".format(timeframe)])
    #need to access attribute based on timeframe here:
    df = pd.DataFrame(candles.of_'{}'.format(timeframe))
    return df

因此,当我调用get_price_action('KRAKEN','BTC:USD','1h')时,它将在kraken交易所中检索比特币/美元的所有小时价格数据。

但是在尝试检索属性时遇到语法错误。

有人可以帮助我找到一种方法来传递属性名称作为参数吗?

谢谢

1 个答案:

答案 0 :(得分:1)

使用getattr内置函数。

df = pd.DataFrame(getattr(candles, 'of_{}'.format(timeframe)))

https://docs.python.org/3/library/functions.html#getattr