Я все еще не оглядывался вокруг декораторов на Python.
Я уже начал использовать множество закрытий, чтобы делать такие вещи, как настройка функций и классов в моем кодировании.
Eg.
class Node :
def __init__(self,val,children) :
self.val = val
self.children = children
def makeRunner(f) :
def run(node) :
f(node)
for x in node.children :
run(x)
return run
tree=Node(1,[Node(2,[]),Node(3,[Node(4,[]),Node(5,[])])])
def pp(n) : print "%s," % n.val
printTree = makeRunner(pp)
printTree(tree)
Насколько я вижу, декораторы - это просто другой синтаксис для выполнения чего-то подобного.
Вместо
def pp(n) : print "%s," % n.val
printTree = makeRunner(pp)
Я бы написал:
@makeRunner
def printTree(n) : print "%s," % n.val
Это все, что нужно для декораторов? Или есть фундаментальное отличие, которое я пропустил?