Кроме стандартных системных ивентов аудита можно вызывать свои ивенты. Для этого используется функция sys.audit()
import sys
def my_hook(event, args):
if event == 'mymodule.myevent':
print('Catched!', args)
sys.addaudithook(my_hook)
sys.audit('mymodule.myevent', 1, 2, 3)
Просто указываем имя ивента первым аргументом и далее любые аргументы.
Такое будет полезно если вы разрабатываете серьезную библиотеку в которой вопрос безопасности стоит не на последнем месте. Дать возможность другим разработчикам добавлять свои проверки будет хорошей практикой!
Хотя никто не запрещает придумать свой способ использования перехвата подобных событий.
Особенно это будет знакомо тем, кто пишет приложения на PyQt. Очень уж похоже на систему сигнал/слот в режиме DirectConnection.
▫️ следует вызывать sys.audit() ПОСЛЕ проверки данных но ДО фактического применения и исполнения логики. Это поможет избежать лишней проверки данных вне основной логики и прервать операцию в нужный момент.
▫️ в имени ивента рекомендуется использовать неймспейс с именем вашего модуля.
#tricks