Посты с тэгом decorator


Три рецепта python'а

В качестве продолжения прошлогодней статьи из серии «когда не надо, но хочется попробовать» хочу рассмотреть пример использования property(), модуля traceback и декораторов.

Предположим, что у нас есть очень нам нужный модуль, документация к которому представляет собой C++ исходники python bindings самого модуля и C++ исходники оригинального пакета. Ну и, конечно, dir(obj) с help(obj.method) немного упрощают жизнь. Но хочется большего: вменяемого если не автокомплита, то хотя бы py-модуля с перечнем методов каждого класса (имеющих описание, список и типы параметров и результата; a la pydoc). А вот бы еще получить словарь со всеми именами и значениями…
Читать дальше →


[Перевод] Нестабильные внешние сервисы: способ решения проблемы

Есть у нас пара внешних HTTP сервисов, которые работают довольно нестабильно. Да, мы должны были об этом подумать на этапе разработки, но мы все время откладывали в длинный ящик, аккуратно писали logging.error и двигались по другим направлениям.

Читать дальше →



«Декораторы проверки» для Views

Рассуждаем про декораторы


Каждый из нас не раз использовал декоратор login_required и скорее всего писал похожий декоратор(скажем для проверки пустая ли корзина). Давайте рассмотрим что делает данный декоратор:
поговорить про декораторы


[Перевод] Понимаем декораторы в Python'e, шаг за шагом. Шаг 2

Хабы: Разработка, Python


И снова доброго времени суток всем читателям!
Спасибо, за проявленый интерес к первой части перевода, надеюсь, вторая вас так же не разочарует.


Итак, в первой части данной статьи мы совершили базовое знакомство с декораторами, принципами их работы и даже написали свой вручную.
Однако, все декораторы, которые мы до этого рассматривали не имели одного очень важного функционала — передачи аргументов декорируемой функции.
Что ж, исправим это недоразумение!
Читать дальше →



[Перевод] Понимаем декораторы в Python'e, шаг за шагом. Шаг 1

Хабы: Разработка, Python


На Хабре множество раз обсуждалась тема декораторов, однако, на мой взгляд, данная статья (выросшая из одного вопроса на stackoverflow) описывает данную тему наиболее понятно и, что немаловажно, является «пошаговым гидом» по вопросу декораторов, позволяющим новичку овладеть этой техникой сразу на достойном уровне.

Итак, что же такое «декоратор»?


Впереди достаточно длинная статья, так что, если кто-то спешит — вот пример того, как работают декораторы:
def makebold(fn):
    def wrapped():
        return "<b>" + fn() + "</b>"
    return wrapped
 
def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped
 
@makebol


[Из песочницы] И снова про декораторы в Python

Хабы: Программирование, Python

За время моей работы системным администратором, да и в IT в целом, я выявил один забавный факт. На какое бы собеседование ты не шел — всегда есть набор вопросов который зададут тебе практически везде и всегда.
Читать дальше →



Python / Организация текучих (fluent) интерфейсов в Python

Вдохновлённый недавним постом про текучие интерфейсы на PHP, я сразу задумался как можно реализовать подобное на питоне проще и красивее (на питоне всегда всё проще и красивее). Предлагаю несколько способов в порядке поступления мыслей.





Тайна замыкания

Перед нами на работе встала задача, ограничить частоту публикации комментариев. Реализовать решили через декоратор для вьюшек.

Другими словами нужно создать декоратор, не допускающий обращение к конкретной view, конкретным пользователем в течении определенного времени.

Что такое декоратор?

Декоратор — обертка для функции. С помощью декоратора можно изменять поведение декорируемой функции, ее входные или выходные параметры.

Примеры декораторов из Django:

login_required
при обращении анонимного пользователя к декорированому view, перенаправляет его на страницу логина.
transaction.commit_on_success
выполняет все запросы из декорируемой функции к БД в одной транзакции и коммитит ее при успеш