تقنية

dataclass في بايثون: هل تكفي الحقول المتساوية لفئتين مختلفتين؟

فئتان مختلفتان
مثال توضيحي [1] [2]

نفصل تساوي الحقول عن تطابق الفئة. [1] [2]

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

لا؛ الحقول وحدها لا تكفي للفئتين هنا. [1] [2]

  • المساواة المولدة الافتراضية تشترط الفئة نفسها وتقارن الحقول المشاركة. [1] [2]
  • فئتا Bud وLeaf مستقلتان؛ لكل منهما tag="seed". [1] [2]
  • على CPython 3.12.14، المقارنة بينهما تعطي False. [1] [2]
  • تحكم: كائنان مختلفان من Bud بالقيمة نفسها يعطيان True. [1] [2]
  • دالة مساواة مخصصة أو compare=False خارج قاعدة المثال الافتراضي. [1] [2]

شرط المقارنة

المساواة المولدة الافتراضية تشترط الفئة نفسها وتقارن الحقول المشاركة. [1] [2]

فئتان مستقلتان

فئتا Bud وLeaf مستقلتان؛ لكل منهما tag="seed". [1] [2]

from dataclasses import dataclass
@dataclass
class Bud:
 tag:str
@dataclass
class Leaf:
 tag:str
a=Bud("seed")
print(a==Leaf("seed"))
print(a==Bud("seed"))

[1] [2]

على CPython 3.12.14، المقارنة بينهما تعطي False. [1] [2]

التحكم والنطاق

تحكم: كائنان مختلفان من Bud بالقيمة نفسها يعطيان True. [1] [2]

دالة مساواة مخصصة أو compare=False خارج قاعدة المثال الافتراضي. [1] [2]

الفئة نفسها
تحكم توضيحي [1] [2]

المراجع

  1. Python 3.12: dataclass equality
  2. CPython 3.12.14: equality generation
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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