在Python3.5中调用函数时出错

时间:2018-06-26 09:55:28

标签: python python-3.x python-2.x

我正在尝试运行IqoptionAppi的存储库

当我尝试运行命令时:api.getcandles(1,60,25)
发生以下错误:

api.getcandles(1,60,25)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __call__() takes 3 positional arguments but 4 were given

我已经看过函数,就像这样:

from iqoptionapi.ws.chanels.base import Base


class GetCandles(Base):
    """Class for IQ option candles websocket chanel."""
    # pylint: disable=too-few-public-methods

    name = "candles"

    def __call__(self, active_id, duration, amount):
        """Method to send message to candles websocket chanel.

        :param active_id: The active/asset identifier.
        :param duration: The candle duration (timeframe for the candles).
        :param amount: The number of candles you want to have
        """
        data = {"active_id": active_id,
                "duration": duration,
                "chunk_size": 25,
                "from": self.api.timesync.server_timestamp - (duration * amount),
                "till": self.api.timesync.server_timestamp}

        self.send_websocket_request(self.name, data)

存储库说它可以在Python 2.7中工作,但是我尝试将其安装在Python 3.5上,除了上述问题之外,它仍然可以工作。指导我到底想念的地方。

1 个答案:

答案 0 :(得分:2)

这里的问题是iqoptionapi/ws/chanels/candles.py中的latest PyPI version模块与Github's master branch version不同,并且没有amount参数(它似乎等于2)。

master分支中:

def __call__(self, active_id, duration, amount):
    ...
    "from": self.api.timesync.server_timestamp - (duration * amount),
    ...

0.5版本中:

def __call__(self, active_id, duration):
    ...
    "from": self.api.timesync.server_timestamp - (duration * 2),
    ...

因此我们可以忽略此参数(根本不传递它,而使用默认值2)或install master branch version using git,例如

> pip install --upgrade git+https://github.com/n1nj4z33/iqoptionapi.git@master

由于版本没有更改,我们在这里使用--upgrade标志,因此我们强制重新安装软件包。

或另一个选择:您可以要求回购所有者发布新版本并将其发布在 PyPI 上。