पायथन के '__enter__' और '__exit__' को समझना
कोड का एक दिलचस्प स्निपेट सामने आया है:
def __enter__(self):
return self
def __exit__(self, type, value, tb):
self.stream.close()
इन पंक्तियों के भीतर कौन सा रहस्यमय जादू छिपा है?
'with' कथन दर्ज करें
पायथन का '__enter__' और '__exit__' जादुई तरीके हैं जो वस्तुओं को 'साथ' कथन के साथ सहजता से एकीकृत करने के लिए सशक्त बनाते हैं। यह कथन "क्लीनअप" क्रियाओं की आवश्यकता वाले कोड को सरल बनाता है, काफी हद तक 'ट्राई-फाइनली' ब्लॉक की तरह। ऑब्जेक्ट जो एक विशिष्ट निष्पादन संदर्भ में संसाधनों का प्रबंधन करते हैं। संदर्भ को 'with' कथन द्वारा परिभाषित किया गया है, और जब वह संदर्भ समाप्त हो जाता है, तो किसी भी आवश्यक सफाई कार्रवाई को करने के लिए '__exit__' विधि स्वचालित रूप से कॉल की जाती है।
वास्तविक दुनिया उदाहरण: डेटाबेस कनेक्शन प्रबंधन
एक उत्कृष्ट उदाहरण जहां '__enter__' और '__exit__' डेटाबेस कनेक्शन प्रबंधित कर रहे हैं:
class DatabaseConnection(object): def __प्रवेश__(स्वयं): # डेटाबेस कनेक्शन स्थापित करें और इसे वापस लौटाएँ ... self.dbconn लौटाएँ def __exit__(स्वयं, exc_type, exc_val, exc_tb): # डेटाबेस कनेक्शन बंद करें self.dbconn.close() ...
इस ऑब्जेक्ट को 'विथ' स्टेटमेंट के साथ उपयोग करने से यह सुनिश्चित होता है कि संदर्भ समाप्त होने के बाद डेटाबेस कनेक्शन स्वचालित रूप से बंद हो जाता है:class DatabaseConnection(object):
def __enter__(self):
# Establish database connection and return it
...
return self.dbconn
def __exit__(self, exc_type, exc_val, exc_tb):
# Close the database connection
self.dbconn.close()
...
निष्कर्ष
with DatabaseConnection() as mydbconn:
# Perform database operations
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3