Вопросы с тегом «python-decorators»


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 = …

12
Что символ «at» (@) делает в Python?
Я смотрю на некоторый код Python, который использовал @символ, но я понятия не имею, что он делает. Я также не знаю, что искать, так как поиск документов Python или Google не возвращает релевантные результаты, когда @символ включен.

11
Как мне избежать «self.x = x; self.y = y; шаблон self.z = z ”в __init__?
Я вижу такие шаблоны, как def __init__(self, x, y, z): ... self.x = x self.y = y self.z = z ... довольно часто, часто с гораздо большим количеством параметров. Есть ли хороший способ избежать такого утомительного повторения? Должен ли класс наследовать от namedtuple?

5
Классный метод декоратор с собственными аргументами?
Как передать поле класса декоратору метода класса в качестве аргумента? Что я хочу сделать, это что-то вроде: class Client(object): def __init__(self, url): self.url = url @check_authorization("some_attr", self.url) def get(self): do_work() Он жалуется, что self не существует для передачи self.urlдекоратору. Есть ли способ обойти это?

10
Пример реального мира о том, как использовать функцию свойства в Python?
Меня интересует, как использовать @propertyв Python. Я читал документы Python, и, на мой взгляд, приведенный здесь пример - это просто игрушечный код: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x …

5
Как передать дополнительные аргументы декоратору Python?
У меня есть декоратор, как показано ниже. def myDecorator(test_func): return callSomeWrapper(test_func) def callSomeWrapper(test_func): return test_func @myDecorator def someFunc(): print 'hello' Я хочу улучшить этот декоратор, чтобы он принял еще один аргумент, как показано ниже def myDecorator(test_func,logIt): if logIt: print "Calling Function: " + test_func.__name__ return callSomeWrapper(test_func) @myDecorator(False) def someFunc(): print …

1
Порядок выполнения декоратора
def make_bold(fn): return lambda : "<b>" + fn() + "</b>" def make_italic(fn): return lambda : "<i>" + fn() + "</i>" @make_bold @make_italic def hello(): return "hello world" helloHTML = hello() Выход: "<b><i>hello world</i></b>" Я примерно понимаю декораторы и то, как они работают с одним из них, в большинстве примеров. В …

5
Как обойти определение функции Python с декоратором?
Я хотел бы знать, возможно ли управлять определением функции Python на основе глобальных настроек (например, ОС). Пример: @linux def my_callback(*args, **kwargs): print("Doing something @ Linux") return @windows def my_callback(*args, **kwargs): print("Doing something @ Windows") return Затем, если кто-то использует Linux, my_callbackбудет использовано первое определение , а второе будет игнорироваться. Дело …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.