"पायथन सजावट" और "सजावटी पैटर्न" के बीच क्या अंतर है?पायथन सजावट और सजावटी पैटर्न के बीच क्या अंतर है?
मुझे पाइथन सजावट का उपयोग कब करना चाहिए, और मुझे सजावटी पैटर्न का उपयोग कब करना चाहिए?
मैं पाइथन सजावट और सजावटी पैटर्न के उदाहरणों को देख रहा हूं?
@AcceptedAnswer
मुझे पता है कि Jakob Bowyer's answer मान्य है। फिर भी स्ट्राइकर का जवाब है जिसने मुझे समझ लिया कि क्यों।
श्रीकर के जवाब के बाद और दिए गए संसाधनों का अध्ययन करने के बाद मैंने यह उदाहरण लिखा है, इसलिए मैं पाइथन सजावट और सजावटी पैटर्न को कल्पना और समझ सकता हूं।
मैं चाहिए असहमत Strikar के साथ "अजगर सज्जाकार डेकोरेटर पैटर्न के एक कार्यान्वयन नहीं हैं"। जो मैंने सीखा है उसके बाद मुझे दृढ़ विश्वास है कि पायथन सजावट सजावटी पैटर्न के कार्यान्वयन हैं। बस क्लासिक तरीके से नहीं।
इसके अलावा, मैं जोड़ने के लिए है कि तथ्य यह है Strikar ने कहा कि बावजूद "अजगर सज्जाकार कार्यक्षमता कार्य करता है और तरीकों की परिभाषा समय में जोड़ें" की जरूरत है आप आसानी से रन टाइम पर Pytohon सज्जाकार उपयोग कर सकते हैं।
फिर भी, मैं अभी भी स्वीकार किए जाते हैं के रूप में Stiker के जवाब निशान क्योंकि यह मुझे अजगर में डेकोरेटर पैटर्न का Implementationसमझने में मदद की।
"""
Testing Python decorators against Decorator Pattern
"""
def function(string):
return string
def decorator(wrapped):
def wrap(string):
# assume that this is something useful
return wrapped(string.upper())
return wrap
def method_decorator(wrapped):
def wrap(instance, string):
# assume that this is something useful
return wrapped(instance, string.upper())
return wrap
@decorator
def decorated_function(string):
print('! '.join(string.split(' ')))
class Class(object):
def __init__(self):
pass
def something_useful(self, string):
return string
class Decorator(object):
def __init__(self, wrapped):
self.wrapped = wrapped
def something_useful(self, string):
string = '! '.join(string.split(' '))
return self.wrapped().something_useful(string)
@method_decorator
def decorated_and_useful(self,string):
return self.something_useful(string)
if __name__ == '__main__':
string = 'Lorem ipsum dolor sit amet.'
print(function(string)) # plain functioon
print(decorator(function)(string)) # Python decorator at run time
print(decorated_function(string)) # Python decorator at definition time
a = Class()
print(a.something_useful(string)) # plain method
b = Decorator(Class)
print(b.something_useful(string)) # Decorator Pattern
print(b.decorated_and_useful(string)) # Python decorator decorated Decorator Pattern
@ श्रीकर सही है। [यहां] (http://stackoverflow.com/q/3118929/146792) एक और एसओ सवाल है कि आपको दिलचस्प लग सकता है! – mac
@ श्रीकर, मैं स्नसर को स्वीकार नहीं कर सकता जो प्रश्न में माफ की गई समस्या का समाधान नहीं करता है, क्षमा करें, लेकिन मेरे प्रश्नों में प्रस्तावित समाधानों में से अधिकांश काम नहीं कर रहे हैं। – seler
@seler मेला पर्याप्त है। [पायथन सजावट] (http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Decorators) पर विकिपीडिया लेख के अनुसार –