Ещё более не смешные диалоги
pythmy:
Есть ли в Python делегаты, как в C# public event Action
?
DobroAlex: В Python прямых делегатов, как в C#, нет, но если очень хочется, можно использовать функции, замыкания или даже классы. Главное — не забыть, зачем это нужно.
outoftime: pythmy, объясни, зачем тебе делегаты? Может, проще найти Python-эквивалент, чем изобретать велосипед?
pythmy:
Мне нужно для отделения модели от представления. Пример: в проекте на PyQT5 модель вызывает функцию self.progress()
из контроллера, но так делать нельзя. Хочу через делегат разделить логику.
Garry Galler: Это уже ближе к делу. В Python делегаты заменяются передачей функций в качестве параметров. То есть, можно передать функцию обновления прогресса в модель через конструктор или метод.
outoftime: Вот пример:
Garry Galler: Да, именно так. А если хочется изящества, можно использовать сигналы/слоты, которые встроены в PyQT. Это нативный способ решать такие задачи.
pythmy: Ага, понял! Значит, мне нужно передавать функцию или использовать сигналы. Спасибо за помощь!
Last updated