实现的基类方法内部的Python抽象方法

时间:2019-02-09 21:33:16

标签: python abstract abc

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

  • 密码
  • 证书
  • 匿名

我创建了 AuthenticationBase 类及其子类:

  • PasswordAuthentication
  • CertificateAuthentication
  • AnonymousAuthentication

基本身份验证分两个步骤:

  1. get_rsts_token
  2. set_access_token-您首先需要RSTS令牌

set_access_token 在子类中具有相同的实现,但是 get_rsts_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_access_token 。如何实现呢?

0 个答案:

没有答案