Os decoradores alteram dinamicamente a funcionalidade de uma função, método ou classe, sem ter que usar subclasses diretamente. Isso é ideal quando você precisa estender a funcionalidade de funções que não deseja modificar. Neste contexto, observe o código Python 2.7 abaixo, que emprega o conceito de decoradores.
class MyDecorator(object):
def __init__(self,v=5):
self.f = None
self.v = v
def __init__(self,v=5):
self.f = None
self.v = v
def __call__(self,f):
self.f = f
return self.decorator
self.f = f
return self.decorator
def decorator(self,a,b):
return self.f(a,b)+self.f(a,b) + self.v
return self.f(a,b)+self.f(a,b) + self.v
@MyDecorator()
def soma(a,b):
return a + b
def soma(a,b):
return a + b
print soma(4,3)
O resultado do último comando “print soma(4,3)” é: