LINUX.ORG.RU

Ответ на: комментарий от Jopich1

ну типа загрузить неймспейс, выгрузить неймспейс, пройтись гц сделав как было

anonymous
()
Ответ на: комментарий от Jopich1

хотя я бы предположил что ему сишный код линковать динамически надо, но всё одно

anonymous
()

Что такое динамическая подгрузка плагинов в интерпретируемом языке?.. Там всё и так динамическое

Crocodoom ★★★★★
()

ещё бы систему выгрузки...

PexuOne
()
Ответ на: комментарий от deadNightTiger

Что-то не втыкнул, как изменить параметры класса программы из плагина. Ну например из плагина добавить пункт в меню в pyqt

AUX ★★★
() автор топика
Ответ на: комментарий от Jopich1

Расширение возможностей программы в рантайме

AUX ★★★
() автор топика
Ответ на: комментарий от AUX
class A:
    pass
a = A()
def foo(self):
    print('hello world!')
setattr(A, 'foo', foo)

a.foo()

Только наверняка в pyqt есть уже встроенные методы для добавления.

Jopich1
()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от AUX

Ну так тыж просил сферический пример в вакууме. Там прям в реалтайме, вроде как можно модули подключать. НА ПИТОНЕ КАРЛ!!!

itn ★★★
()
import argparse
import importlib

# Parse parameters
parser = argparse.ArgumentParser()
parser.add_argument('--plugin', dest='plugin', help='plugin', default="Fplugin::param"])
options = parser.parse_args()

# Import the plugin
opts = options.plugin.split('::')
plugin_module = importlib.import_module('myapp.plugins')
plugin = getattr(plugin_module, opts[0])

# Init the plugin 
plugin_obj = plugin(*opts[1:])
plugin_obj.my_method()
Shtsh ★★★★
()
Ответ на: комментарий от Shtsh

при таком подходе возникает проблема с «выгрузкой» плагина и роллбеком изменений, которые он мог внести. что по сути дичь дикая, но ТСу вроде именно это и надо

genryRar ★★
()
Ответ на: комментарий от genryRar

Ну, можно удалить плагин в нужном месте и описать дополнительные действия в деструкторе. Или просто реализовать отдельный метод для этого.

Shtsh ★★★★
()
Ответ на: комментарий от Shtsh

но ты ведь не проконтролируешь, что там плагин наизменял. через sys.modules['__main__'] он может вообще что угодно модифицировать за пределами своего неймспейса. только если делать полную копию окружения и откатывать к ней - но тогда как быть с остальными плагинами

genryRar ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.