如何调用函数并在 Python class 中传递参数?

how can I call a function and pass params in a Python class?

我正在尝试使用 Woo 交易所交易 api。他们提供了一段代码,这是一个令人印象深刻的 Python class 结构。复制如下。

我的问题是如何使用它?

我试过运行:

get_orders(self, 'BTCUSDT')

抛出错误“NameError: name 'self' is not defined”

get_orders('BTCUSDT')

抛出“类型错误:get_orders() 缺少 1 个必需的位置参数:'symbol'”

这里是代码(class 结构),友人提供:

import requests
import datetime
import time
import hmac
import hashlib
from collections import OrderedDict
#Application ID 9d4d96f6-3d3b-4430-966d-8733aa3dc3bc

#API Key
api_key = 'my_api_key'
#API Secret
api_secret = 'my_api_secret'

class Client():
    def __init__(self, api_key=None, api_secret=None):
        self.api_key = api_key
        self.api_secret = api_secret
        self.base_api = "https://api.woo.network/v1/"

    def get_signature(self, params, timestamp):
        query_string = '&'.join(["{}={}".format(k, v) for k, v in params.items()]) + f"|{timestamp}"
        signature = hmac.new(
            self.api_secret.encode('utf-8'),
            query_string.encode('utf-8'),
            hashlib.sha256
        ).hexdigest()
        return signature

    def get_orders(self, symbol):
        url = self.base_api + "orders/"
        params = {
            "symbol": 'BTCUSDT'
        }
        params = OrderedDict(sorted(params.items()))
        timestamp = str(int(time.time() * 1000))
        signature = self.get_signature(params, timestamp)
        headers = {
            'Content-Type': "application/x-www-form-urlencoded",
            'x-api-key': self.api_key,
            'x-api-signature': signature,
            'x-api-timestamp': timestamp,
            'cache-control': 'no-cache'
        }
        resp = requests.get(url=url, params=params, headers=headers).json()

因此,重复和总结一下,当我编写自己的代码以使用此 class 时,我如何调用函数 get_orders() 并且更一般地说,引用class结构?在此先感谢您的帮助。

看起来您已经截断了代码,因为 get_orders 似乎 return 什么都没有。

但是,您可以像这样构建一个 Client 实例:

client = Client(api_key, api_secret)

...然后...

client.get_orders(None)

这可能看起来有点奇怪,但 get_orders 需要一个参数,但从未使用过。我不认为 get_orders 的实现完全符合预期,因为它将始终使用 BTCUSDT