Запуск метода класса в декораторе - PullRequest
0 голосов
/ 03 июня 2019

У меня есть класс, который обрабатывает доступ к базе данных.Я пытаюсь поймать исключение во время взаимодействия с базой данных, для этого я использую декоратор.

В настоящее время я возвращаю ошибку, обнаруженную в декораторе, и проверяю каждый раз, когда запускаю метод класса, если значениевозвращается исключение.Это на самом деле работает, но мне интересно, есть ли лучший способ сделать это, потому что мой код становится повторяющимся.

Я думал об использовании декоратора для вызова метода класса.Это как-то возможно?

Вот пример кода:

def catch_exception(f):
    @functools.wraps(f)
    def func(*args, **kwargs):
        try:
            return f(*args, **kwargs)
        except Exception as error:
            # call method connection_error(error)

    return func


class AccessDB(object):

    def connection_error(self, error):
        [...]

    @catch_exception
    def add_user(self, username, password, is_admin=False):
        [...]

    @catch_exception
    def get_user(self, username):
        [...]

А вот пример того, как я использую декоратор.(У меня return error вместо # call method connection_error(error))

user = db.get_user(username)
if not isinstance(user, Exception):
   [...]

Я нуб, если у вас, ребята, есть лучшее решение, дайте мне знать!Спасибо за внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...