اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يمكنك استخدام عدة طرق، و إحدى الطرق الشائعة هي استخدام ميثود __new__ لضمان أنه يتم إنشاء كائن واحد فقط من الفئة مهما تم استدعاؤها بهذا الشكل:
 

class Singleton:
    _instance = None  # متغير يخزن النسخة الوحيدة

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance

# اختبار Singleton
singleton1 = Singleton()
singleton2 = Singleton()

# التحقق من أن الكائنين هما نفس النسخة
print(singleton1 is singleton2)  # ستطبع True

هنا في الكود new هي ميثود خاصة يتم استدعاؤها قبل إنشاء الكائن، وتستخدم هنا لضمان أن النسخة الوحيدة من الفئة يتم إرجاعها كل مرة، أما cls._instance فهو متغير فئوي يخزن النسخة الوحيدة من الكائن، إذا كانت None، يتم إنشاء الكائن، وإلا يتم إرجاع النسخة الموجودة.

بهذا الشكل، يتم التأكد من أن أي محاولة لإنشاء كائن جديد من الفئة ستعيد النسخة نفسها الموجودة بالفعل.

  • 0
نشر
بتاريخ 21 ساعة قال Chihab Hedidi:

يمكنك استخدام عدة طرق، و إحدى الطرق الشائعة هي استخدام ميثود __new__ لضمان أنه يتم إنشاء كائن واحد فقط من الفئة مهما تم استدعاؤها بهذا الشكل:
 

class Singleton:
    _instance = None  # متغير يخزن النسخة الوحيدة

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance

# اختبار Singleton
singleton1 = Singleton()
singleton2 = Singleton()

# التحقق من أن الكائنين هما نفس النسخة
print(singleton1 is singleton2)  # ستطبع True

هنا في الكود new هي ميثود خاصة يتم استدعاؤها قبل إنشاء الكائن، وتستخدم هنا لضمان أن النسخة الوحيدة من الفئة يتم إرجاعها كل مرة، أما cls._instance فهو متغير فئوي يخزن النسخة الوحيدة من الكائن، إذا كانت None، يتم إنشاء الكائن، وإلا يتم إرجاع النسخة الموجودة.

بهذا الشكل، يتم التأكد من أن أي محاولة لإنشاء كائن جديد من الفئة ستعيد النسخة نفسها الموجودة بالفعل.

الف شكرااا لحضرتك جدا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...