Как обрабатывать свои события?

Обработка событий в Python может быть осуществлена с помощью механизма обработчиков событий или с использованием библиотеки, специализированной на работу с событиями, такой как PyQt или wxPython. В данном ответе рассмотрим пример обработки событий с использованием стандартной библиотеки Python.

### 1. Использование классов и методов для обработки событий:

class Button:
    def __init__(self):
        self.click_handler = None
    
    def set_click_handler(self, handler):
        self.click_handler = handler
    
    def click(self):
        if self.click_handler:
            self.click_handler()

def on_button_click():
    print("Button clicked!")

# Создание объекта кнопки
button = Button()

# Установка обработчика события
button.set_click_handler(on_button_click)

# Имитация клика по кнопке
button.click()

### 2. Использование декораторов для обработки событий:

class Button:
    def __init__(self):
        self.click_handler = None
    
    def set_click_handler(self, handler):
        self.click_handler = handler
    
    def click(self):
        if self.click_handler:
            self.click_handler()

# Декоратор для обработчика события клика
def click_handler(func):
    def wrapper():
        print("Button clicked!")
        func()
    return wrapper

# Установка обработчика события с помощью декоратора
@click_handler
def on_button_click():
    print("Additional action on button click!")

# Создание объекта кнопки
button = Button()

# Имитация клика по кнопке
button.click()

Обе приведенные выше реализации показывают способы обработки событий в Python. При этом важно понимать, что механизм обработки событий может различаться в зависимости от конкретной задачи и использованных библиотек. Следует выбирать подходящий способ в зависимости от требований проекта.