"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما السحر الذي يحدث في طريقتي \'__enter__\' و \'__exit__\' في بايثون؟

ما السحر الذي يحدث في طريقتي \'__enter__\' و \'__exit__\' في بايثون؟

تم النشر بتاريخ 2024-11-03
تصفح:965

What Magic Occurs within Python\'s \'__enter__\' and \'__exit__\' Methods?

فهم "__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__' آلية قوية لإدارة الموارد وتنفيذ إجراءات التنظيف ضمن سياقات محددة. إنها تمكن المطورين من كتابة تعليمات برمجية أنيقة وقابلة للصيانة، مما يعزز مرونة لغة بايثون وقدراتها التعبيرية.

بيان الافراج أعيد طبع هذه المقالة على: 1729245137 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3