Sie heißen Dekorateure. Sie sind Funktionen, die auf andere Funktionen angewendet werden. Hier ist eine Kopie meiner Antwort auf eine ähnliche Frage.
Python-Dekoratoren fügen einer anderen Funktion zusätzliche Funktionalität hinzu. Ein Kursivschrift Dekorateur wie
def makeitalic(fn):
def newFunc():
return "<i>" + fn() + "</i>"
return newFunc
Hinweis sein könnte, dass eine Funktion innerhalb einer Funktion definiert ist. Was es im Grunde tut, ist eine Funktion durch die neu definierte zu ersetzen. Zum Beispiel habe ich diese Klasse
class foo:
def bar(self):
print "hi"
def foobar(self):
print "hi again"
Jetzt sagen, ich möchte beide Funktionen "---" nach und bevor sie fertig sind. Ich könnte einen Druck "---" vor und nach jeder Druckanweisung hinzufügen. Aber weil ich mich nicht mögen, zu wiederholen, werde ich einen Dekorateur machen
def addDashes(fn): # notice it takes a function as an argument
def newFunction(self): # define a new function
print "---"
fn(self) # call the original function
print "---"
return newFunction
# Return the newly defined function - it will "replace" the original
So, jetzt kann ich meine Klasse
ändern
class foo:
@addDashes
def bar(self):
print "hi"
@addDashes
def foobar(self):
print "hi again"
Für mehr auf Dekorateure, überprüfen http://www.ibm.com/developerworks/linux/library/l-cpdecor.html
@uberjumper - Sie sollten die Antwort auf abhinavg geben, wenn Sie das Gefühl haben, dass wir es beide verdienen. Ich habe freien Traffic auf meinem Blog und sie haben sowieso weniger Reputation als ich. –