@LakeForest

Как написать декоратор на класс для проверки, что поле класса инициализировалось?

_MODEL = get_model("/service/model")

def check_init_model(func):
    @wraps(func)
    def wrapper(*args, **kw):
        assert args[0] is not None, "Модель не инициализирована"

@check_init_model
class TestClass:
    model = _MODEL 
    def __init__(self, ...):
          ...


TypeError: NoneType takes no arguments
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Ну во-первых, что значит "переменная инициализировалась"? Допустимо ли значение, присвоенное полю класса? Так это должен сам класс проверять.
Во-вторых, декоратор отрабатывает при объявлении класса, а не при создании его экземпляров. Так что тебе придётся пытаться обернуть метод __init__() в декорируемом классе, если он есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы