Абстрактный метод Python внутри реализованного метода базового класса - PullRequest
0 голосов
/ 10 февраля 2019

Я могу пройти проверку подлинности с использованием некоторого 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 во всех подклассах.Как этого добиться?

...