পাইথনে রানটাইম কনটেক্সট 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 ~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]