मैं तरीकों में से एक समूह के साथ एक वर्ग है कहते हैं:पायथन: कक्षा के किसी भी तरीके के लिए कुछ करें?
class Human():
def eat():
print("eating")
def sleep():
print("sleeping")
def throne():
print("on the throne")
तो मैं साथ
John=Human()
John.eat()
John.sleep()
John.throne()
मैं प्रत्येक विधि बुलाया जा रहा है के लिए print("I am")
चलाना चाहते हैं सभी तरीकों को चलाते हैं। इसलिए मुझे कुछ
I am:
eating
I am:
sleeping
I am:
on the throne
क्या प्रत्येक विधि को दोबारा सुधारने के बिना ऐसा करने का कोई तरीका है?
को metaprogramming का उपयोग कर वर्ग तरीकों से खुद को बदलने के लिए एक पूर्व/पोस्ट आपरेशन चलाने के लिए, इस सवाल का जवाब की तरह एक डेकोरेटर का उपयोग करें कोशिश कर सकते हैं विधियों: [कक्षा के भीतर सभी कार्यों के लिए एक सजावट संलग्न करना] (http://stackoverflow.com/q/3467526) और [एक वर्ग सजावट लिखना जो सभी विधियों के लिए एक सजावटी लागू करता है] (http://stackoverflow.com/q/6695854) –
यदि आप उन संपादनों की संख्या को कम करने की कोशिश कर रहे हैं जिन्हें आपको बनाना है, तो सबसे सरल बात यह है कि प्रत्येक विधि की परिभाषा को बदलना है। यदि आप किसी भी स्थान पर परिवर्तन को अलग करने का कोई तरीका ढूंढ रहे हैं, तो किसी मौजूदा या भविष्य की विधि पर लागू होने के लिए, सजावटी जाने का रास्ता हैं। – chepner
क्यों कोई फ़ंक्शन 'def do (self, action)' नहीं है, फिर 'खाने' सिर्फ 'self.do ("खाने") बन जाता है और आउटपुट में कोई और परिवर्तन एक ही स्थान पर होता है। – jonrsharpe