تقنية

repr=False في dataclass: هل يستبعد الحقل من المساواة؟

repr لكلا الكائنين تعطي Entry(code=4).
العرض يتطابق.

repr=False للحقل تخفيه من العرض المولد؛ compare تبقى True افتراضيًا، فيشارك في المساواة. [1]

الخلاصة السريعة

لا؛ memo تشارك رغم إخفائها من العرض. [1]

  • repr=False للحقل تخفيه من العرض المولد؛ compare تبقى True افتراضيًا، فيشارك في المساواة. [1]
  • على CPython 3.12.14، own وother من Entry، ولهما code=4؛ memo هي oak وpine بالترتيب، مع field(repr=False). [1]
  • repr(own) وrepr(other) تعطيان النص Entry(code=4)؛ العرض المولد لا يضم memo هنا. [1]
  • own==other تعطي False؛ اختلاف memo يؤثر في المساواة المولدة، رغم تطابق العرض. [1]
  • تحكم: Entry(4,"oak") كائن جديد يساوي own؛ النتيجة True لتطابق الحقلين. نختبر عرضًا ومساواة مولدين، دون تخصيصهما أو فئات مختلفة. [1]

خياران مستقلان

repr=False للحقل تخفيه من العرض المولد؛ compare تبقى True افتراضيًا، فيشارك في المساواة. [1]

حقل مخفي

على CPython 3.12.14، own وother من Entry، ولهما code=4؛ memo هي oak وpine بالترتيب، مع field(repr=False). [1]

النص المعروض

repr(own) وrepr(other) تعطيان النص Entry(code=4)؛ العرض المولد لا يضم memo هنا. [1]

from dataclasses import dataclass,field @dataclass class Entry: code:int memo:str=field(repr=False) own=Entry(4,"oak");other=Entry(4,"pine") print(repr(own),repr(other)) [1]

own==other تعطي False رغم تطابق العرض.
المساواة ترفض.

المساواة والتحكم

own==other تعطي False؛ اختلاف memo يؤثر في المساواة المولدة، رغم تطابق العرض. [1]

print(own==other) control=Entry(4,"oak") print(own==control) [1]

تحكم: Entry(4,"oak") كائن جديد يساوي own؛ النتيجة True لتطابق الحقلين. نختبر عرضًا ومساواة مولدين، دون تخصيصهما أو فئات مختلفة. [1]

المراجع

  1. Python dataclass/field

للتوسع: لغات البرمجة.

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