ما هو __slots__ في بايثون ولماذا يُستخدم؟

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو __slots__ في بايثون ولماذا يُستخدم؟ دليل شامل لتحسين الكلاسات في بايثون

في لغة بايثون، تلعب الكلاسات (Classes) دورًا محوريًا في البرمجة كائنية التوجه. لكن عند العمل المكثف مع الكائنات، قد تلاحظ أن هذه البرامج تستهلك قدرًا كبيرًا من الذاكرة. يصبح هذا الأمر بالغ الأهمية خاصة عند إنشاء ملايين النسخ من نفس الكلاس.

في مثل هذه الحالات، تأتي آلية خاصة للإنقاذ وهي __slots__. إنها ليست مجرد عنصر نحوي، بل أداة تحسين قوية تتيح لك التحكم في الذاكرة وتسريع أداء البرامج.

دعنا نفهم ما هو __slots__، وكيفية استخدامه، وفي أي الحالات يكون ضروريًا حقًا.


ما هو __slots__ في بايثون؟

__slots__ هو سمة خاصة (attribute) للكلاس تعمل على تقييد قائمة السماح المسموح بها لنسخ هذا الكلاس.

افتراضيًا، عند إنشاء كائنات في بايثون، تُخزَّن سماتها في قاموس يُسمى __dict__. هذا الأمر مريح، لكنه غير فعال من حيث الذاكرة، خاصة عند إنشاء العديد من الكائنات المتشابهة.

عند تعريف __slots__، تقوم بايثون بدلاً من استخدام القاموس بإنشاء هياكل ثابتة التخصيص لتخزين السمات، مما يوفر الذاكرة بشكل كبير ويسرّع الوصول إلى هذه السمات.


📚 مثال بسيط بدون استخدام __slots__:

python
class Person: def __init__(self, name, age): self.name = name self.age = age p = Person("Alice", 30) print(p.__dict__) # {'name': 'Alice', 'age': 30}

كما ترى، جميع السمات تُخزَّن في __dict__.

المدونات

توصيات الكتب