Perguntas com a marcação «python-decorators»


17
Como fazer uma cadeia de decoradores de funções?
Como posso criar dois decoradores em Python que fazem o seguinte? @makebold @makeitalic def say(): return "Hello" ... que deve retornar: "<b><i>Hello</i></b>" Não estou tentando fazer HTMLisso em um aplicativo real - apenas tentando entender como os decoradores e o encadeamento de decoradores funcionam.




5
Decorador de método de classe com argumentos próprios?
Como passo um campo de classe para um decorador em um método de classe como argumento? O que eu quero fazer é algo como: class Client(object): def __init__(self, url): self.url = url @check_authorization("some_attr", self.url) def get(self): do_work() Ele reclama que o eu não existe para passar self.urlpara o decorador. Existe …


1
Ordem de execução do decorador
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() Resultado: "<b><i>hello world</i></b>" Eu entendo aproximadamente sobre decoradores e como funciona com um deles na maioria dos exemplos. Neste exemplo, …

5
Como faço para passar argumentos extras para um decorador Python?
Eu tenho um decorador como abaixo. def myDecorator(test_func): return callSomeWrapper(test_func) def callSomeWrapper(test_func): return test_func @myDecorator def someFunc(): print 'hello' Eu quero melhorar este decorador para aceitar outro argumento como abaixo def myDecorator(test_func,logIt): if logIt: print "Calling Function: " + test_func.__name__ return callSomeWrapper(test_func) @myDecorator(False) def someFunc(): print 'Hello' Mas este código …

5
Como ignorar a definição de função python com o decorador?
Gostaria de saber se é possível controlar a definição da função Python com base nas configurações globais (por exemplo, SO). Exemplo: @linux def my_callback(*args, **kwargs): print("Doing something @ Linux") return @windows def my_callback(*args, **kwargs): print("Doing something @ Windows") return Então, se alguém estiver usando Linux, a primeira definição de my_callbackserá …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.