Syntax | سینتکس
3.01K subscribers
410 photos
108 videos
35 files
378 links
Download Telegram
سوال پایتونی:
در مورد مفهوم Context Managers در Python توضیح دهید. چگونه می‌توان یک Context Manager سفارشی ایجاد کرد؟ یک مثال عملی ارائه دهید.

Context Managers
در Python ابزارهایی برای مدیریت منابع (مانند فایل‌ها، قفل‌ها و اتصالات پایگاه داده) هستند. آن‌ها اطمینان حاصل می‌کنند که منابع به درستی آزاد شوند، حتی در صورت رخ دادن خطا یا استثنا.

برای ایجاد یک Context Manager سفارشی، شما باید یک کلاس ایجاد کنید که دو متد __enter__ و __exit__ را پیاده‌سازی می‌کند. متد __enter__ باید منبع را آماده کند و آن را برگرداند. متد __exit__ باید منبع را آزاد کند و با استثناهای رخ داده به درستی برخورد کند.

مثال عملی: فرض کنید می‌خواهیم یک Context Manager برای باز کردن و بستن فایل‌ها بنویسیم:

class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode

def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file

def __exit__(self, exc_type, exc_value, traceback):
self.file.close()

with FileManager('data.txt', 'w') as f:
f.write('Hello, World!')


در این مثال، FileManager یک کلاس Context Manager است. متد __enter__ فایل را باز می‌کند و شیء فایل را برمی‌گرداند. متد __exit__ فایل را می‌بندد، حتی اگر استثنایی در بلوک with رخ دهد.

#python #context_manager

@Syntax_fa
👍5🔥1