通过方法callp中的位置和关键字传递参数'algorithm'

时间:2019-05-17 05:48:30

标签: python-3.x

我正在尝试编写一个类,并称其为我的代码

import jwt


class generate_jwt():

    def __init__(self):
        self.name = 'jwt token manager'

    def encode_with_hsa(self, secret, expiration_time, payload):
        exp_time = {'exp': expiration_time}
        return jwt.encode(payload, exp_time, secret, algorithm='HS256')

snake = generate_jwt()
so = {'secret':'ff'}
print(snake.encode_with_hsa('dd', 434234, so))

但是这表明TypeError:调用类并重现值时,encode()对于参数'algorithm'具有多个值

1 个答案:

答案 0 :(得分:0)

我通过执行以下操作来修正您的代码:

import jwt
class generate_jwt():

    def __init__(self):
        self.name = 'jwt token manager'

    def encode_with_hsa(self, secret, expiration_time, payload):
        exp_time = {'exp': expiration_time}
        return jwt.encode(payload, secret, algorithm='HS256', exp_time)

snake = generate_jwt()
so = {'secret':'ff'}
print(snake.encode_with_hsa('dd', 434234, so))

签出编码函数here的定义:

def encode(self,
               payload,  # type: Union[Dict, bytes]
               key,  # type: str
               algorithm='HS256',  # type: str
               headers=None,  # type: Optional[Dict]
               json_encoder=None  # type: Optional[Callable]
               ):

因此,您必须遵循函数的定义,即参数的传递方式(参数的顺序)。

注意:我不确定您在哪里需要exp_time。您可以删除它,因为它是可选的。