У меня есть проблема, когда я пытаюсь создать простой декоратор класса, который проверяет наличие переданных переменных (то есть они не являются None). Проблема в том, что это делается внутри другого класса, поэтому проверяемые переменные относятся к self.
. В основном я пытаюсь создать оболочку, которая перебирает заданные собственные переменные и проверяет, не являются ли они None.
class CheckForVariablesPresence:
"""Wrapper for checking if given variable(s) are not None.
"""
def __init__(self, *variables):
self.variables = variables
def __call__(self, func):
@wraps(func)
def wrapper(*args, **kwargs):
for variable in self.variables:
if variable is None:
raise KeyError(
"Variable not found.\n",
"Run the appropriate method first.",
)
return func(*args, **kwargs)
Дело в том, что я не могу передать self.variable
в декоратор метода,поскольку я даже еще не создано.
@CheckForVariablesPresence(self.variable)
def __repr__(self):
return str(self.variable)
Есть идеи, как я могу сделать это по-другому (и лучше)? Я начал с одной функции для проверки точной переменной, но проверяемые переменные растут и зависят от каждого иного метода, который я вызываю, поэтому я решил использовать оболочку, которая могла бы выполнять итерации по ним.