Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557

Использование декораторов

22.02.2017, 16:18. Показов 4623. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача сделать декоратор, который бы подключался к базе данных, выполнял некоторые действия, передавал соединение к бд и курсор во внутреннюю функцию. После выполнения функции - выполнял еще пару действий.
Написанный код.
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
def query_in_session(fn):
    def wrapped():
        con = cx_Oracle.connect(settings.HYDRA_CONNECTION_STRING)
 
        try:
            cur = con.cursor()
            try:
                assert isinstance(cur, cx_Oracle.Cursor)
                assert isinstance(con, cx_Oracle.Connection)
 
                cur.callproc(**settings.INIT_SESSION)
                cur.callproc(**settings.SET_ACTIVE_FIRM)
                res = fn(cur, con)
                cur.callproc(**settings.CLOSE_SESSION)
                con.commit()
            except cx_Oracle.Error:
                res = False
            finally:
                cur.close()
        except cx_Oracle.Error:
            res = False
        finally:
            con.close()
 
        return res
 
    return wrapped()
Но есть одна проблема - чтобы были доступны объект соединения с бд и курсор нужно писать вот так:
Python
1
2
3
@query_in_session
def some_sunc(cur, con):
    .....
А хочется
Python
1
2
3
@query_in_session
def some_sunc():
    .....
Можно ли так сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2017, 16:18
Ответы с готовыми решениями:

Генератор декораторов
Напишите генератор декораторов check_password, т. е. функцию, которая возвращает декоратор. Генератор декораторов принимает в качестве...

Генератор декораторов
Напишите генератор декораторов check_password, т. е. функцию, которая возвращает декоратор. Генератор декораторов принимает в качестве...

Python понимание декораторов
Всем добрый день! Начал разбираться с декораторами. В принципе, все понятно, кроме одного момента. Я понимаю, что в неправильном...

47
Заблокирован
25.02.2017, 23:27
Студворк — интернет-сервис помощи студентам
Wi0M, короче, ненужная канитель, которая портит регулярность синтаксиса, и вводит ненужные сущности в язык, усложняя его без надобности.

Но за пояснения спасибо
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
25.02.2017, 23:31
foo(my_shiny_new_decorator)
0
Заблокирован
25.02.2017, 23:42
Цитата Сообщение от Wi0M Посмотреть сообщение
в пайтоне могу сделать
насколько я понимаю, в питоне это делается только через магические методы, иначе это будет вычисленно как арифметический оператор
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
26.02.2017, 00:44
actionpattern, не понял
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
26.02.2017, 01:02
actionpattern, хочешь язык вообще без синтаксического сахара бери go, там вырезали практически все.
0
Заблокирован
26.02.2017, 01:30
Wi0M, ну, через всякие там __add__ и прочее.

Добавлено через 5 минут
Цитата Сообщение от alex925 Посмотреть сообщение
хочешь язык вообще без синтаксического сахара
Сахар сахару рознь, это понятие растяжимое. Когда в языке он реализуется через операторы, спецформы и тп -- это плохо, это замусоривает язык. И говорит о его слабости, кстати говоря.

тру принцип дизайна языков:
не сваливать в кучу разные полезные конструкции и средства, а напротив — удалить слабости и ограничения, вызывающие необходимость добавления в язык новых возможностей
Если бы гвидо придерживался этого принципа, питонисты бы не глотали по новой версии в год без обратной совместимости
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
26.02.2017, 02:36
actionpattern, Не пиши о том чего не понимаешь, ты этим себя только на посмешище выставляешь.

Обратной совместимости нет, только между 2 и 3 версией. Это вполне себе нормальная ситуация, когда язык вырос и чтобы не тащить за собой разные архаичные проблемы и ошибки выпустили версию без обратной совместимости. Такое случается со всеми языками, мусор всех прошлых лет тащит за собой только java и из-за этого внедрение нового функционала там большая боль (от этого же там внедряются разные велосипеды и не логичности, только для того, чтобы сохранить обратную совместимость).
0
Заблокирован
26.02.2017, 03:00
alex925, угу, насрать на юзеров под благовидными предлогами гораздо проще. Вопрос лишь в том, до какой степени юзеры готовы это говно глотать.

Добавлено через 2 минуты
Цитата Сообщение от actionpattern Посмотреть сообщение
до какой степени юзеры готовы это говно глотать.
причем, под раздачу попадают и потребители продуктов, написанных на волшебном ЯП, в контексте поддержки.
Не исключено, что поциэнта по этой причине из гугла турнули

Добавлено через 14 минут
Цитата Сообщение от alex925 Посмотреть сообщение
собой только java
я знаю еще, как минимум JS. ЕМНИП, Scheme до 6-й версии, а в 7-й, вроде как вернули.
На самом деле их не мало, думается. Просто мы не все знаем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2017, 03:00

Нужно реализовать задачу с использованием итераторов и декораторов
Помогите пожалуйста, реализовать задачу с использованием итераторов и декораторов. from random import randint # Создание списка,...

Реализация декораторов вне зависимости от количества аргументов и их имен
Доброго времени. У меня есть код с декораторами def bold(x): def wrapped(): return "<b>" + x() +...

Задача "Генератор декораторов"
Напишите генератор декораторов check_password, т. е. функцию, которая возвращает декоратор. Генератор декораторов принимает в качестве...

Разработка, отладка и испытание программ с применением декораторов свойств классов
Продемонстрируйте работу декоратора через задание свойств объекта класса конструктором, сеттером и непосредстсвенным изменением значения...

С помощью декораторов устранить уязвимость Фродо к Назгулам и оку Саурона.
Люди добрые, прошу помочь с решение задачи на декораторы... Мерри и Пиппин, утащившие палантир у Сарумана с ужасом обнаружили, что...


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

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Опции темы

Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 28.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 27.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru