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

2756
Как сделать цепочку функциональных декораторов?

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

982
Как работает @property декоратор?

Я хотел бы понять, как работает встроенная функция property. Что меня смущает, так это то, что он propertyтакже может быть использован в качестве декоратора, но он принимает аргументы только тогда, когда используется как встроенная функция, а не как декоратор. Этот пример из документации : class...

580
Что символ «at» (@) делает в Python?

Я смотрю на некоторый код Python, который использовал @символ, но я понятия не имею, что он делает. Я также не знаю, что искать, так как поиск документов Python или Google не возвращает релевантные результаты, когда @символ...

170
Как мне избежать «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 ... довольно часто, часто с гораздо большим количеством параметров. Есть ли хороший способ избежать такого утомительного повторения? Должен ли класс наследовать от...

154
Классный метод декоратор с собственными аргументами?

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

145
Пример реального мира о том, как использовать функцию свойства в 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):...

100
Как передать дополнительные аргументы декоратору Python?

У меня есть декоратор, как показано ниже. def myDecorator(test_func): return callSomeWrapper(test_func) def callSomeWrapper(test_func): return test_func @myDecorator def someFunc(): print 'hello' Я хочу улучшить этот декоратор, чтобы он принял еще один аргумент, как показано ниже def...

66
Как обойти определение функции Python с декоратором?

Я хотел бы знать, возможно ли управлять определением функции Python на основе глобальных настроек (например, ОС). Пример: @linux def my_callback(*args, **kwargs): print("Doing something @ Linux") return @windows def my_callback(*args, **kwargs): print("Doing something @ Windows") return Затем, если...