采用 1 个位置参数,但给出了 2 个;组合字符串作为参数
takes 1 positional argument but 2 were given; Combined String as Argument
我是 python 的新手,甚至在搜索了 inet 之后,我也不明白这里出了什么问题。
为了使用 Binance API,我需要这样的命令:client.get_order_book(symbol = 'ETHBTC')
由于符号是动态的,我试过了
x1 = 'symbol = '
x2 = symbols[0].get('symbol') #Output: ETHBTC
x = x1 + "'" + x2 + "'"
print(x) #Output: symbol = 'ETHBTC'
但是当我打电话给
client.get_order_book(x)
它绘制错误:
TypeError: get_order_book() takes 1 positional argument but 2 were
given
这是代码的其余部分:
client = Client(api_key, api_secret)
symbols = client.get_ticker()
print(symbols[0].get('symbol')) #Output ETHBTC
y = len(symbols)
for i in range(y):
x1 = 'symbol = '
x2 = symbols[i].get('symbol')
x = x1 + "'" + x2 + "'"
print(x) #Output: symbol = 'ETHBTC'
print(client.get_order_book(x))
我读了很多关于 self
的内容,但我不明白,在这里必须在哪里以及如何使用它?!
x
是文字字符串 symbol='ETHBTC'
,而不是 "saved" 关键字参数。
您尝试的呼叫相当于
client.get_order_book("symbol='ETHBTC'"),
但此方法不接受任何位置参数(self
除外)。这是 signature:
def get_order_book(self, **params):
预打包关键字参数并模拟
client.get_order_book(symbol='ETHBTC')
你需要一个dict
来封装关键字参数。
x = {'symbol': 'ETHBTC'}
client.get_order_book(**x)
方法get_order_book
调用时不等待任何参数。
当您通过 comand client = Client() self
启动 class 的实例时,默认情况下将进入所有非 staticmethod
作为参数来引用方法内部 class 的实例.您应该指出该方法 get_order_book
获取一个参数:
class Client(object):
...
def get_order_book(self, symbol):
# do something with symbol
或者如果您不需要在方法中引用 class 的实例:
class Client(object):
...
@staticmethod
def get_order_book(symbol):
# do something with symbol
如果你想预定义方法中的参数(默认为 vals),你应该使用:
...
def get_order_book(self, symbol="some_default_symbol"):
...
print(symbol) # will print "some_default_symbol"
我是 python 的新手,甚至在搜索了 inet 之后,我也不明白这里出了什么问题。
为了使用 Binance API,我需要这样的命令:client.get_order_book(symbol = 'ETHBTC')
由于符号是动态的,我试过了
x1 = 'symbol = '
x2 = symbols[0].get('symbol') #Output: ETHBTC
x = x1 + "'" + x2 + "'"
print(x) #Output: symbol = 'ETHBTC'
但是当我打电话给
client.get_order_book(x)
它绘制错误:
TypeError: get_order_book() takes 1 positional argument but 2 were given
这是代码的其余部分:
client = Client(api_key, api_secret)
symbols = client.get_ticker()
print(symbols[0].get('symbol')) #Output ETHBTC
y = len(symbols)
for i in range(y):
x1 = 'symbol = '
x2 = symbols[i].get('symbol')
x = x1 + "'" + x2 + "'"
print(x) #Output: symbol = 'ETHBTC'
print(client.get_order_book(x))
我读了很多关于 self
的内容,但我不明白,在这里必须在哪里以及如何使用它?!
x
是文字字符串 symbol='ETHBTC'
,而不是 "saved" 关键字参数。
您尝试的呼叫相当于
client.get_order_book("symbol='ETHBTC'"),
但此方法不接受任何位置参数(self
除外)。这是 signature:
def get_order_book(self, **params):
预打包关键字参数并模拟
client.get_order_book(symbol='ETHBTC')
你需要一个dict
来封装关键字参数。
x = {'symbol': 'ETHBTC'}
client.get_order_book(**x)
方法get_order_book
调用时不等待任何参数。
当您通过 comand client = Client() self
启动 class 的实例时,默认情况下将进入所有非 staticmethod
作为参数来引用方法内部 class 的实例.您应该指出该方法 get_order_book
获取一个参数:
class Client(object):
...
def get_order_book(self, symbol):
# do something with symbol
或者如果您不需要在方法中引用 class 的实例:
class Client(object):
...
@staticmethod
def get_order_book(symbol):
# do something with symbol
如果你想预定义方法中的参数(默认为 vals),你应该使用:
...
def get_order_book(self, symbol="some_default_symbol"):
...
print(symbol) # will print "some_default_symbol"