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

كيفية إضافة خصائص ديناميكية إلى فئات مثل إدخالات القاموس؟

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

How to Add Dynamic Properties to Classes like Dictionary Entries?

إضافة خصائص ديناميكية إلى الفئات

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

في البداية، كان النهج الواعد يتضمن تعيين الخصائص باستخدام:

setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

ومع ذلك، أدى هذا إلى كائنات خاصية بدلاً من السلوك المطلوب.

يكمن الحل في إضافة خصائص إلى الفصل نفسه، بدلاً من الحالات الفردية. وإليك كيفية العمل:

class Foo(object):
    pass

foo = Foo()
foo.a = 3
Foo.b = property(lambda self: self.a   1)
print(foo.b)  # Prints 4

في هذا المثال، نضيف خاصية b إلى الفئة Foo باستخدام واصف الخاصية. عند الوصول إلى foo.b، تستدعي Python الطريقة __get__ للواصف وتمرر مثيل الفئة كوسيطة. تقوم الطريقة __get__ بعد ذلك بإرجاع قيمة الخاصية، والتي يتم حسابها على أنها self.a 1.

توفر الخصائص طريقة ملائمة لتحديد السلوك المخصص للسمات، مما يكشف بشكل فعال عن السباكة في نظام Python OO.

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

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

Copyright© 2022 湘ICP备2022001581号-3