Исходный код EJIO.ctk_extender.event.base
## /ctk_extender/event/base.py
from typing import Any
__all__ = [
'Event',
]
[документация]
class Event:
"""
Базовый абстрактный класс для всех событий.
Каждое конкретное событие должно наследоваться от этого класса.
"""
__slots__ = ('_timestamp', '_sender_thread_name', '_sender')
def __init__(self, sender: Any = None) -> None:
"""
Инициализирует базовые метаданные события.
:param sender: Отправитель события.
"""
import time
import threading
self._timestamp: float = time.time()
self._sender_thread_name: str = threading.current_thread().name
self._sender: Any = sender
@property
def timestamp(self) -> float:
"""Возвращает UNIX-время создания события."""
return self._timestamp
@property
def sender_thread_name(self) -> str:
"""Возвращает имя потока, отправившего событие."""
return self._sender_thread_name
@property
def sender(self) -> Any:
"""Возвращает отправителя события."""
return self._sender
def __repr__(self) -> str:
"""Возвращает строковое представление события с его атрибутами."""
attrs = ", ".join(f"{k}={v!r}" for k, v in self.__dict__.items() if not k.startswith("_"))
return f"{self.__class__.__name__}({attrs})"