الكائنات غير القابلة للتغيير في بايثون: ما وراء الحلول الأساسية
بينما توفر فئة المجموعة القياسية الثبات، تستكشف هذه المقالة تقنيات أكثر تقدمًا لإنشاء كائنات غير قابلة للتغيير في Python النقي أو مع امتدادات C.
تجاوز __setattr__: نهج محدود
أحد الحلول الشائعة هو تجاوز طريقة setattr. ومع ذلك، فإن هذا يمنع إعداد السمة حتى في الدالة init. لذلك، قد لا يكون مناسبًا لجميع السيناريوهات.
فئة فرعية: حل جزئي
هناك طريقة أخرى تتمثل في تصنيف فئة فرعية، مما يوفر جديد[ مخصصًا &&&] طريقة وخصائص الوصول إلى السمات. ومع ذلك، لا تمنع هذه الطريقة تمامًا الوصول إلى السمات من خلال self[0] وself[1]، وهو ما يمكن أن يكون غير مريح.
الحل المسمى: البساطة والتوافق
الحل الأبسط والأكثر قوة هو استخدام الفئة المسماة من وحدة مجموعات بايثون:Immutable = collections.namedtuple("Immutable", ["a", "b"])
على غرار التقنية السابقة، يؤدي هذا إلى إنشاء نوع مشتق من الصف ويستخدم __slots__. إنه يوفر العديد من المزايا:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3