Форум сайта python.su
0
Есть данные и их иногда по разному нужно обрабатывать. Хочу сделать, что-то подобное плагинам чтобы-постоянно код не менять. Подключил например плагин на фильтрацию данных длинна, которых меньше 10 и он работает, не надо отключил и все. Есть примеры такой реализации?
Офлайн
0
делаешь модуль, сохраняешь в файле name.py
потом там, где надо его использовать:
import name
Отредактировано MickeyMouse (Дек. 4, 2016 18:20:00)
Офлайн
221
MickeyMouse
вы уверены что понимаете что такое система плагинов? то что вы предложили это питоновские пакеты это не то же самое что плагины.
ivanzzzz
Думаю гуглится вполне. Я делал, но думаю на просторах сети более грамотные решение есть, нежели делаю я.
Офлайн
568
ivanzzzz
Есть данные и их иногда по разному нужно обрабатывать. Хочу сделать, что-то подобное плагинам чтобы-постоянно код не менять. Подключил например плагин на фильтрацию данных длинна, которых меньше 10 и он работает, не надо отключил и все. Есть примеры такой реализации?
def filter_func(data, length=10): return [d for d in data if len(d) >= length] def capitalize(data): return [d.capitalize() for d in data] PLUGINS = {"filter": filter_func, "capitalize": capitalize} def plugin(name, *plugin_args, **plugin_kwargs): def decorator(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) if name in PLUGINS: result = PLUGINS[name](result, *plugin_args, **plugin_kwargs) return result return wrapper return decorator @plugin("capitalize") @plugin("filter", length=5) def target(): return ["eefqawefwefasdfasdfadfasdf", "dsa", "esadasdassda"] print target()
Отредактировано FishHook (Дек. 5, 2016 06:03:04)
Офлайн
253
FishHookМне казалось что большинство плагинов находятся в папочке plugins и автоматом грузятся при старте приложения. Но конечно решения могут быть разные.
Первое, что приходит в голову
cat data | capitalize | only_english | max_len 5 > result
Отредактировано doza_and (Дек. 5, 2016 08:43:55)
Офлайн
568
doza_andМне показалось, что в постановке задачи от топикстартера имеется в виду АОП, а не динамически подключаемые модули.
Мне казалось что большинство плагинов находятся в папочке plugins и автоматом грузятся при старте приложения
Офлайн