فهم "__enter__" و "__exit__" في بايثون
ظهر مقتطف مثير للاهتمام من التعليمات البرمجية:
def __enter__(self):
return self
def __exit__(self, type, value, tb):
self.stream.close()
ما هو السحر الغامض الذي يكمن في هذه السطور؟
أدخل بيان "مع"
أدخل "__enter__" في بايثون و "__exit__" هي طرق سحرية تمكن الكائنات من التكامل بسلاسة مع عبارة "with". يبسط هذا البيان التعليمات البرمجية التي تتطلب إجراءات "تنظيف"، تمامًا مثل كتلة "المحاولة النهائية".قوة إدارة السياق
تتيح هذه الأساليب السحرية إنشاء الكائنات التي تدير الموارد ضمن سياق تنفيذ محدد. يتم تعريف السياق من خلال عبارة "with"، وعندما ينتهي هذا السياق، يتم استدعاء الأسلوب "__exit__" تلقائيًا لتنفيذ أي إجراءات تنظيف ضرورية.
مثال من العالم الحقيقي: إدارة اتصال قاعدة البيانات
مثال كلاسيكي حيث يتألق '__enter__' و'__exit__' في إدارة اتصالات قاعدة البيانات:
class DatabaseConnection(object): مواطن __أدخل__(الذات): # إنشاء اتصال بقاعدة البيانات وإعادته ... العودة self.dbconn Def __exit__(self, exc_type, exc_val, exc_tb): # أغلق اتصال قاعدة البيانات self.dbconn.إغلاق() ...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:
# تنفيذ عمليات قاعدة البياناتwith DatabaseConnection() as mydbconn:
# Perform database operations
الاستنتاجيوفر '__enter__' و'__exit__' آلية قوية لإدارة الموارد وتنفيذ إجراءات التنظيف ضمن سياقات محددة. إنها تمكن المطورين من كتابة تعليمات برمجية أنيقة وقابلة للصيانة، مما يعزز مرونة لغة بايثون وقدراتها التعبيرية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3