मैं एक डेकोरेटर कि एक तर्क के रूप उदाहरण ही आवश्यकता है का उपयोग कर उदाहरण के तरीकों को सजाने के लिए निम्न कोड के साथ आया था:पायथन: कुछ भी उदाहरण के रूप में गतिशील रूप से बताए उदाहरण के तरीकों के साथ गलत विशेषताओं
from functools import wraps
def logging_decorator(tricky_instance):
def wrapper(fn):
@wraps(fn)
def wrapped(*a, **kw):
if tricky_instance.log:
print("Calling %s.." % fn.__name__)
return fn(*a, **kw)
return wrapped
return wrapper
class Tricky(object):
def __init__(self, log):
self.log = log
self.say_hi = logging_decorator(self)(self.say_hi)
def say_hi(self):
print("Hello, world!")
i1 = Tricky(log=True)
i2 = Tricky(log=False)
i1.say_hi()
i2.say_hi()
यह महान काम करने के लिए लगता है , लेकिन मुझे डर है कि मैंने इस चाल के कुछ अनपेक्षित साइड इफेक्ट्स को अनदेखा कर दिया होगा। क्या मैं खुद को पैर में शूट करने वाला हूं, या यह सुरक्षित है?
ध्यान दें कि मैं नहीं है वास्तव में प्रवेश के लिए इसका उपयोग करना चाहते हैं, यह सिर्फ कम से कम सार्थक उदाहरण मैं के साथ आ सकता है।
कानूनी लगता है: एक शर्मनाक सरल समाधान हो रहा है। IMHO। – Evpok