Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 14

Делегаты в питоне наподобие c# public event Action

08.06.2020, 22:01. Показов 4205. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли делегаты в питоне на подобие c# public event Action Method?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2020, 22:01
Ответы с готовыми решениями:

Делегаты Func, Action
Доброго времени суток, необходимо переделать код с использованием делегатов Func и Action. А я никак не пойму для чего они вообще нужны,...

Делегаты Func и Action, а так же их параметры
С самописными делегатами разобрался Но зачем нужны Func и Action? Это заранее подготовленные делегаты что бы не приходилось...

Проблема с event Action<T> в UWP
Суть в общем то такая.(в UWP я полный 0, не кидайте тапками) У меня есть рабочая сдк, которая выводит логи в файл. Мне нужно переделать...

8
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
08.06.2020, 22:17
pythmy, начнём с того, что как таковых, делегатов в питоне нет
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
08.06.2020, 22:44
pythmy, зачем?
DobroAlex, переопределить __iadd__, не вижу затруднений в реализации, вот только зачем?
0
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 14
08.06.2020, 23:18  [ТС]
нужно для отделения модели от представления, например использовать прогресс бар.

в моем случае проект приложения на PyQT5 состоит из 3 файлов view, model, controller:

ниже представлен кусок кода модели, в ней вызывается функция из controller - self.progress(), а такого быть не может( модель и представление смешиваться не должны) поэтому вводится делегат. Но как это сделать в питоне я не знаю.

кусок кода из model:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import controller
 
 
class Archiver(controller.Controller):
    # метод архиватор
    def pack(self):
        self.res = bytearray()
        self.step = 0
        with open(self.lineEdit.text(), 'rb') as f:
            byte_arr = f.read()
        count = 1
 
        self.remember_file()
        self.move = (50 / (len(byte_arr) - 1))
 
        if len(byte_arr) == 0:
            return (self.res)
 
        for i in range(len(byte_arr) - 1):
            if byte_arr[i] == byte_arr[i + 1]:
                count += 1
 
            if byte_arr[i] != byte_arr[i + 1]:
                self.res.append(count)
                self.res.append(byte_arr[i])
                count = 1
 
            if count == 256:
                self.res.append(255)
                self.res.append(byte_arr[i])
                count = 1
 
            self.progress()
кусок кода из controller(сама функция):
Python
1
2
3
    def progress(self):
        self.step += self.move
        self.progressBar.setValue(round(self.step))
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
09.06.2020, 00:01
Цитата Сообщение от pythmy Посмотреть сообщение
кусок кода из model:
Цитата Сообщение от pythmy Посмотреть сообщение
import controller
class Archiver(controller.Controller):
Это точно код из model?

Добавлено через 10 минут
Цитата Сообщение от pythmy Посмотреть сообщение
нужно для отделения модели от представления
Нужно разобаться что такое MVC и delegation pattern и, явно, не по вики. IMHO, по MVC лучше всего вправляет мозг ruby on rails.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.06.2020, 00:01
Цитата Сообщение от pythmy Посмотреть сообщение
Но как это сделать в питоне я не знаю.
Шаблон делегирования является просто абстракцией, которая имеет разные варианты реализаций.
В Python этот шаблон реализуется с помощью классов миксинов, которые подмешиваются к любым другим.
Кроме того, функцию-обработчик можно просто передать как параметр класса.
0
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 14
09.06.2020, 07:47  [ТС]
Может вы знаете что такое принцип MVS? (не MVC)

Добавлено через 12 минут
outoftime,
Цитата Сообщение от pythmy Посмотреть сообщение
Может вы знаете что такое принцип MVS? (не MVC)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.06.2020, 13:35
Цитата Сообщение от pythmy Посмотреть сообщение
принцип MVS?
Нет такого паттерна. Или принципа.
0
09.06.2020, 19:30

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
Нет такого паттерна. Или принципа.
Зато есть принцип ПНХ

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2020, 19:30
Помогаю со студенческими работами здесь

Public Event. Может быть кто-то поможет ?
HIHI FRDS. Возникла проблемка, может быть кто-то может подсказать ? Изначально проблема в следующем. Есть Form1 на ней Label1....

A public action method 'Predpriyatiya' was not found on controller
Всем привет! асп мвц 4, все нормально работало, после очередных моих правок (уж не помню и каких) регулярно выскакивает ошибки типа: ...

Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты
Господа, скажите пожалуйста, для чего использовать ключевое слово event в объявлении события, если события - это те же самые делегаты ?...

Событие Event.COPY Event.PASTE Event.CUT
Привет я не знаю как написать код в котором текстовое поле реагировало бы на события копирования/вставки/вырезки В справочнике написано,...

Как скрестить ежа с енотом class MyClass : public QGraphicsProxyWidget, public QWidget ?
Я уже столько наплясался с бубном во круг это графикс сцены, никак не могу определиться с лучшим вариантом для её айтима, который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru