В настоящее время я пишу приложение Flask, которое направляет конечные точки на множество «действий». Эти действия все реализовать родительскую функцию под названием «Run()»Флажок маршрутизации для просмотра функций через наследование
В коде:
import abc
class Action(object):
__metaclass__ = abc.ABCMeta
@classmethod
def authenticated(self):
print("bypassing action authentication")
return True
@classmethod
def authorized(self):
print("bypassing action authorization")
return True
@classmethod
@abc.abstractmethod
def execute(self):
raise NotImplementedError("must override execute!")
@classmethod
def response(self, executeResult):
return executeResult
@classmethod
def run(self):
result = ""
if self.authenticated() & self.authorized():
result = self.execute()
return self.response(result)
Цель состоит в том, что все на самом деле используемых действия являются производными членами этого класса действий, которые обнаженный минимум реализации выполнения (), которая их отличает. К сожалению, когда я пытаюсь добавить маршруты для этих
app.add_url_rule('/endone/', methods=['GET'], view_func=CoreActions.ActionOne.run)
app.add_url_rule('/endtwo/', methods=['GET'], view_func=CoreActions.ActionTwo.run)
я получаю следующее сообщение об ошибке:
AssertionError: View function mapping is overwriting an existing endpoint function: run
Кто-нибудь знает возможное решение этой проблемы? Благодаря!