वे कहा जाता है सज्जाकार:
यह निम्न के लिए बस वाक्यात्मक चीनी है। वे अन्य कार्यों पर लागू कार्यों हैं। यहां एक समान प्रश्न के उत्तर की एक प्रति है।
पायथन सजावटी दूसरे फ़ंक्शन में अतिरिक्त कार्यक्षमता जोड़ते हैं। एक इटैलिक डेकोरेटर की तरह
def makeitalic(fn):
def newFunc():
return "<i>" + fn() + "</i>"
return newFunc
नोट हो सकता है कि एक समारोह में एक समारोह के अंदर परिभाषित किया गया है। यह मूल रूप से क्या करता है एक नए कार्यों के साथ एक समारोह को प्रतिस्थापित करता है। उदाहरण के लिए, मेरे पास यह कक्षा
class foo:
def bar(self):
print "hi"
def foobar(self):
print "hi again"
अब कहें, मैं चाहता हूं कि वे दोनों कार्य करने के बाद और बाद में "---" प्रिंट करें। मैं प्रत्येक प्रिंट स्टेटमेंट के पहले और बाद में एक प्रिंट "---" जोड़ सकता था। लेकिन क्योंकि मैं अपने आप को दोहरा पसंद नहीं है, मैं एक डेकोरेटर
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
तो अब मैं
class foo:
@addDashes
def bar(self):
print "hi"
@addDashes
def foobar(self):
print "hi again"
सज्जाकार अधिक जानकारी के लिए करने के लिए मेरी कक्षा बदल सकते हैं बनाने के लिए, जाँच http://www.ibm.com/developerworks/linux/library/l-cpdecor.html
स्रोत
2009-06-02 13:17:30
@uberjumper जाएगा - अगर आपको लगता है कि हम दोनों इसके लायक हैं तो आपको अभिनव का जवाब देना चाहिए। मुझे अपने ब्लॉग पर कुछ मुफ्त ट्रैफिक मिला है और उनके पास उनके मुकाबले कम प्रतिनिधि है। –