"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ## كيف يمكنني إنشاء كائنات غير قابلة للتغيير في بايثون ولماذا تم تسميتها بأفضل طريقة؟

## كيف يمكنني إنشاء كائنات غير قابلة للتغيير في بايثون ولماذا تم تسميتها بأفضل طريقة؟

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

## How can I create immutable objects in Python and why is namedtuple the best approach?

الكائنات غير القابلة للتغيير في بايثون

في بايثون، توفر الثبات آلية قيمة لحماية سلامة البيانات. ومع ذلك، فإن إنشاء كائنات غير قابلة للتغيير يمثل بعض التحديات.

تجاوز

هناك طريقة شائعة تتمثل في تجاوز

setattr طريقة. ومع ذلك، يتم استدعاء هذه الطريقة حتى أثناء عملية init، مما يجعلها غير مناسبة لإنشاء كائنات غير قابلة للتغيير.

تصنيف فرعي للصفوف

تتضمن استراتيجية أخرى فئة فرعية من الصف. تضمن هذه التقنية الثبات عن طريق التجاوز المباشر للطريقة

الجديدة. ومع ذلك، فإنه يعرض العناصر الأساسية للصف مثل الذات[0] والذات[1]، مما يعرض للخطر عدم إمكانية الوصول إليها.

سميت المجموعة كحل

لأبسط وأكثر الحل الفعال، فكر في استخدام مجموعات Python.namedtuple. تقوم هذه الوظيفة بإنشاء نوع يشبه الصف يشبه فئة، ويتميز بسمات مسماة. Immutable = Collections.namedtuple("Immutable", ["a", "b"])

يظهر هذا النهج العديد من المزايا:

    الإيجاز وسهولة التنفيذ
  • التوافق مع الاختيار والنسخ
  • يمنع الوصول إلى السمة عبر [0] وما إلى ذلك.

تنفيذ Namedtuple

يتم اشتقاق الصفوف المسماة من الصفوف والاستفادة من

الفتحات لضمان الثبات. هذا مشابه لنهج الفئات الفرعية، ولكن مع فائدة إضافية تتمثل في السمات المسماة.

توافق بايثون 2.6

تم تقديم الصفوف المسماة في بايثون 2.6، مما يضمن التوافق مع بايثون الأقدم. الإصدارات.

الاستنتاج

على الرغم من وجود طرق مختلفة لإنشاء كائنات غير قابلة للتغيير في بايثون، إلا أن الصفوف المسماة توفر حلاً مناسبًا وفعالًا يلبي الحاجة إلى الثبات في برمجة بايثون.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3