Python抽象方法在实现的基类方法中

2024-06-29 00:50:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用以下方法之一对某些RESTful API进行身份验证:

  • 密码
  • 证书
  • 匿名的

我已经创建了AuthenticationBase类及其子类:

  • 密码验证
  • 证书认证
  • 匿名身份验证

基本上,身份验证需要两个步骤:

  1. 获取\u rsts \u令牌
  2. 设置\访问\令牌-您首先需要RSTS令牌

set\u access\u token在子类中具有相同的实现,但是get\u rsts\u token不同,因此我尝试了以下方法:

import abc

ABC = abc.ABCMeta('ABC', (object,), {'__slots__': ()})

class AuthenticationBase(ABC):

    @abc.abstractmethod
    def get_rsts_token(self):
        pass

    def set_access_token()
       rsts_token = self.get_rsts_token()
       access_token = retrieve_token(rsts_token)

但这会导致一个错误:

TypeError: Can't instantiate abstract class AuthenticationBase with abstract methods get_rsts_token

我希望避免在所有子类中重写set\u access\u token。如何做到这一点?你知道吗


Tags: 方法token身份验证密码getaccessdef子类