Вопросы с тегом «decorator»

Декоратор - это объектно-ориентированный шаблон проектирования, который позволяет динамически добавлять поведение к существующим классам. Это один из шаблонов структурного проектирования «Банды четырех».

17
Как сделать цепочку функциональных декораторов?
Как я могу сделать два декоратора в Python, которые будут делать следующее? @makebold @makeitalic def say(): return "Hello" ... который должен вернуть: "<b><i>Hello</i></b>" Я не пытаюсь сделать HTMLэто в реальном приложении - просто пытаюсь понять, как работают декораторы и цепочки декораторов.

14
Как работает @property декоратор?
Я хотел бы понять, как работает встроенная функция property. Что меня смущает, так это то, что он propertyтакже может быть использован в качестве декоратора, но он принимает аргументы только тогда, когда используется как встроенная функция, а не как декоратор. Этот пример из документации : class C(object): def __init__(self): self._x = …

22
Создание синглтона в Python
Этот вопрос предназначен не для обсуждения того, является ли шаблон проектирования синглтона желательным, является ли он антипаттерном или для каких-либо религиозных войн, а для обсуждения того, как этот шаблон лучше всего реализовать в Python таким способом, который наиболее питоничен. В данном случае я определяю «самый питонический» как означающий, что он …

6
Что делает functools.wraps?
В комментарии к этому ответу на другой вопрос кто-то сказал, что они не уверены, что functools.wrapsделают. Итак, я задаю этот вопрос, чтобы в StackOverflow была запись об этом для дальнейшего использования: что именно делает functools.wraps?

13
Чем отличаются шаблоны Proxy, Decorator, Adapter и Bridge?
Я смотрел на Proxy Pattern, и мне он кажется очень похожим на паттерны Decorator, Adapter и Bridge. Я что-то неправильно понимаю? Какая разница? Зачем мне использовать шаблон Proxy по сравнению с другими? Как вы использовали их в прошлом в реальных проектах?

13
Декораторы с параметрами?
У меня проблема с передачей переменной 'insurance_mode' декоратором. Я сделал бы это следующим оператором декоратора: @execute_complete_reservation(True) def test_booking_gta_object(self): self.test_select_gta_object() но, к сожалению, это утверждение не работает. Возможно, может быть есть лучший способ решить эту проблему. def execute_complete_reservation(test_case,insurance_mode): def inner_function(self,*args,**kwargs): self.test_create_qsf_query() test_case(self,*args,**kwargs) self.test_select_room_option() if insurance_mode: self.test_accept_insurance_crosseling() else: self.test_decline_insurance_crosseling() self.test_configure_pax_details() self.test_configure_payer_details return …
401 python  decorator 

13
Каковы некоторые общие применения для декораторов Python? [закрыто]
Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме переполнения стека. Закрыто 6 лет назад . Улучшить этот вопрос Хотя мне нравится думать о себе как о достаточно компетентном кодере Python, одним …
337 python  decorator 

29
Предупреждение экспериментальных декораторов при компиляции TypeScript
Я получаю предупреждение ... Экспериментальная поддержка декораторов - это функция, которая может быть изменена в будущем выпуске. Установите параметр'ериментальный Декораторы ', чтобы удалить это предупреждение. ... хотя мои compilerOptions в tsconfig.json имеют следующие настройки: "emitDecoratorMetadata": true, "experimentalDecorators": true, Что странно, так это то, что некоторые случайные классы, которые используют декораторы, …

15
Как получить имена параметров метода?
Учитывая функцию Python: def a_method(arg1, arg2): pass Как я могу извлечь количество и имена аргументов. То есть, учитывая, что у меня есть ссылка наfunc , я хочу func.[something]вернуться ("arg1", "arg2"). Сценарий использования для этого заключается в том, что у меня есть декоратор, и я хочу использовать аргументы метода в том …

2
Что такое '@' (в символе) в декораторе Redux @connect?
Я изучаю Redux с React и наткнулся на этот код. Я не уверен, если это специфичным для Redux или нет, но я видел следующий фрагмент кода в одном из примеров. @connect((state) => { return { key: state.a.b }; }) Хотя функциональность connect довольно проста, но я не понимаю, @прежде чем …

3
Как реализовать декоратор машинописи?
TypeScript 1.5 теперь имеет декораторы . Может ли кто-нибудь привести простой пример, демонстрирующий правильный способ реализации декоратора, и описать, что означают аргументы в возможных действительных сигнатурах декоратора? declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void; declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => …


5
Называете класс статическим методом внутри тела класса?
Когда я пытаюсь использовать статический метод из тела класса, и определяю статический метод, используя встроенную staticmethodфункцию в качестве декоратора, например: class Klass(object): @staticmethod # use as decorator def _stat_func(): return 42 _ANS = _stat_func() # call the staticmethod def method(self): ret = Klass._stat_func() + Klass._ANS return ret Я получаю следующую …

16
Есть ли декоратор для простого кэширования возвращаемых значений функции?
Учтите следующее: @property def name(self): if not hasattr(self, '_name'): # expensive calculation self._name = 1 + 1 return self._name Я новичок, но я думаю, что кэширование может быть преобразовано в декоратор. Только я такого не нашел;) PS реальный расчет не зависит от изменчивых значений

4
Почему @ foo.setter в Python не работает для меня?
Итак, я играю с декораторами в Python 2.6, и у меня возникают некоторые проблемы с их работой. Вот мой файл класса: class testDec: @property def x(self): print 'called getter' return self._x @x.setter def x(self, value): print 'called setter' self._x = value Я думал, что это означает, что нужно обращаться xсо …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.