سؤال

ماذا سيكون أفضل طريقة للتعامل مع __repr__() وظيفة لكائن صنع مستمر؟ على سبيل المثال ، واحد يمثل صفًا في قاعدة بيانات (علائقية أو كائن).

وفقا لمستندات بيثون ، __repr__() يجب إرجاع سلسلة من شأنها إعادة إنشاء الكائن eval() هذا (تقريبا) eval(repr(obj)) == obj, أو تدوين قوسين للتمثيلات غير الدقيقة. عادةً ما يعني هذا إلقاء جميع البيانات التي لا يمكن تجديدها بواسطة الكائن في السلسلة. ومع ذلك ، بالنسبة للكائنات المستمرة التي يعيد إنشاء الكائن قد يكون بسيطًا مثل استرداد البيانات من قاعدة البيانات.

لذلك ، بالنسبة لمثل هذه الكائنات ، فإن جميع بيانات الكائنات أو المفتاح الأساسي فقط في __repr__() سلسلة؟

هل كانت مفيدة؟

المحلول

يجب على Repr إرجاع سلسلة من شأنها إعادة إنشاء الكائن باستخدام Eval

هذا أمر قانوني لأنواع بسيطة مثل int أو سلسلة أو تعويم ، ولكن ليس قابلاً للاستخدام لكائن DB متعدد العمود مع أكثر من 15 عمودًا

على سبيل المثال ، إذا كان لدي فئة تمثل السعر ، فسيكون من المعقول عمل __repr__ إظهار الخصائص الرئيسية لها: المبلغ والعملة

def __repr__(self):
   return '%s %s'%(self.amount,self.currency)

نصائح أخرى

كيفية الحصول عليها من قاعدة البيانات غير مهتم بشكل عام. إرجاع الطريق لإعادة إنشاء الكائن من الصفر ، على سبيل المثال SomeModel(field1, field2, ...).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top