__init__() 接受 1 到 2 个位置参数,但给出了 3 个

Posted

技术标签:

【中文标题】__init__() 接受 1 到 2 个位置参数,但给出了 3 个【英文标题】:__init__() takes from 1 to 2 positional arguments but 3 were given 【发布时间】:2022-01-04 19:56:03 【问题描述】:

我正在编写一个机器人来使用 bitvavo.com 作为我的交易所来交易加密货币。在他们的网站上,您可以找到包含以下代码的 API 部分 (https://docs.bitvavo.com/):

from python_bitvavo_api.bitvavo import Bitvavo

bitvavo = Bitvavo('<APIKEY>', '<APISECRET>')
response = bitvavo.balance()
for item in response:
  print(item)

但是,当我将此代码复制并粘贴到我的 IDE 中时,它给了我以下错误:

__init__() takes from 1 to 2 positional arguments but 3 were given

当我只尝试 () 中的一个变量时,我注意到程序运行了,但是由于没有正确的值,Bitvavo.com 给我一个错误:(APIKEY, APISECRET),这是正常的。

经过一番研究,我发现在大多数情况下,这与变量“self”(未显示)已经使用了Bitvavo() 中的两个变量点之一有关。但是由于它来自from python_bitvavo_api.bitvavo import Bitvavo 部分,我自己没有创建这个函数,我不知道如何解决这个问题。

如果有人知道如何解决此问题并愿意向我展示解决方案或提供替代方案,我将非常感激。如果可能的话,请用最基本的方式解释它,因为我很笨! :)

【问题讨论】:

请分享完整的错误详情。 是的,你很笨。但你并不是因为你在代码中犯了错误而愚蠢,而是因为你试图跳得太远超出你的知识。退后几步。阅读一些书籍和教程,甚至参加一些课程。 The official Python documentation 相当不错,既适合初学者,也适合你进步后的参考。小步,朋友,小步,你很快就能跑了。 :) 【参考方案1】:

python_bitvavo_api 库类采用单个 dict 作为参数,包含多个参数。你的意思是:

bitvavo = Bitvavo('APIKEY': '<APIKEY>', 'APISECRET': '<APISECRET>' )

【讨论】:

我只是花了好几天的时间试图修复它。非常感谢,它有效!【参考方案2】:

从Bitvavo API Github 页面上的示例来看,您需要将该信息作为字典而不是单个参数提供。

from python_bitvavo_api.bitvavo import Bitvavo
bitvavo = Bitvavo(
  'APIKEY': '<APIKEY>',
  'APISECRET': '<APISECRET>',
  'RESTURL': 'https://api.bitvavo.com/v2',
  'WSURL': 'wss://ws.bitvavo.com/v2/',
  'ACCESSWINDOW': 10000,
  'DEBUGGING': False
)

来自readme here

因此它抱怨太多的论点。它只期望 1 个(除了自动插入的类自己的 self,因此总共 2 个)。

【讨论】:

以上是关于__init__() 接受 1 到 2 个位置参数,但给出了 3 个的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: __init__() 接受 1 个位置参数,但给出了 2 个

简单的留言簿 django:__init__() 接受 1 个位置参数,但给出了 2 个

TypeError: __init__() 接受 2 个位置参数,但给出了 4 个

TypeError: __init__() 接受 2 个位置参数,但给出了 3 个 // 链接列表 [重复]

TypeError: __init__() 接受 1 个位置参数,但给出了 3 个

图表类:TypeError:__init__() 接受 1 个位置参数,但给出了 3 个