Исходный код EJIO.ctk_extender.state.model

## /ctk_extender/state/model.py

from typing import Any
from ..event import EventController
from .events import StateChangedEvent

__all__ = [
    'ReactiveModel',
]


[документация] class ReactiveModel: """ Базовый класс-миксин для создания реактивных моделей и датаклассов. Любая модификация атрибутов автоматически генерирует StateChangedEvent. """ __slots__ = () def __setattr__(self, name: str, value: Any) -> None: # Проверяем, изменилось ли значение на самом деле old_value = getattr(self, name, None) super().__setattr__(name, value) if old_value != value and not name.startswith('_'): # Оповещаем систему, что модель изменилась EventController.emit(StateChangedEvent(self, self))