पायथन में, रनटाइम कॉन्टेक्स्ट with स्टेटमेंट द्वारा सपोर्टेड होता है। कॉन्टेक्स्ट को कॉन्टेक्स्ट मैनेजर द्वारा परिभाषित किया जाता है। कॉन्टेक्स्ट मैनेजर का उपयोग करके, हम रनटाइम कॉन्टेक्स्ट को परिभाषित करने के लिए यूजर-डिफाइंड क्लासेस बना सकते हैं। यह स्टेटमेंट बॉडी एक्जीक्यूट होने से पहले टास्क में प्रवेश करता है, और जब स्टेटमेंट बॉडी पूरी हो जाती है, तो यह समाप्त होता है।
कॉन्टेक्स्ट मैनेजर के लिए दो अलग-अलग मेथड्स होते हैं:
__enter__() मेथड
__enter__() मेथड रनटाइम कॉन्टेक्स्ट में प्रवेश करने के लिए उपयोग किया जाता है। यह वर्तमान ऑब्जेक्ट या कोई अन्य संबंधित ऑब्जेक्ट लौटाता है। लौटाया गया मान with स्टेटमेंट के as क्लॉज में आइडेंटिफायर से बंधा होता है।
__exit__(exc_type, exc_val, exc_tb) मेथड
__exit__() मेथड बूलियन टाइप रिजल्ट लौटाता है। यह किसी भी अपवाद को इंगित करता है जो हुआ हो। यदि with स्टेटमेंट के लिए कोई अपवाद है, तो यह एंड ब्लॉक पर जाएगा।
उदाहरण कोड
class MyFileManager:
def __init__(self, fname):
self.file_name = fname
def __enter__(self):
self.myFile = open(self.file_name, 'r')
return self.myFile
def __exit__(self, exc_type, exc_val, exc_tb):
if self.myFile:
self.myFile.close()
with MyFileManager('sampleTextFile.txt') as myFile:
x = myFile.read()
print(x)आउटपुट
Test File. We can store different contents in this file ~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]