<> = Decorators = == História == Decorators foram introduzidos na versão 2.4 de python, e são definidos na PEP 318. Segundo a própria PEP, esse nome pode não ser definitivo, já que existe um design pattern com o mesmo nome e além disso, o nome decorator tem um significado diferente na área de compiladores. Mas como ele já está aí há um bom tempo com esse nome, não creio que vá haver mudanças. == Motivação == Imagine o seguinte exemplo: {{{ class AlgumaCoisa: classattribute = None def set_some(cls, argument): cls.classattribute = argument set_some = classmethod(set_some) }}} Com esse trecho, a função set_some se torna um método de classe, permitindo construções como: AlgumaCoisa.set_some(29), que irá alterar o atributo de classe classattribute. Mas imagine que a função set_some ficasse grande - algumas centenas de linhas de código. Nessa caso, ficaria fácil esquecer de definir o classmethod no final. Usando a nova sintaxe dos decorators, podemos fazer: {{{ class AlgumaCoisa: classattribute = None @classmethod def set_some(cls, argument): cls.classattribute = argument }}}