تقنية

SimpleNamespace في بايثون: هل تساوي قاموس السمات؟

own==data تعطي False رغم القيم المتطابقة.
الكائن والقاموس.

SimpleNamespace تقارن سمات كائنين منها؛ المقارنة مع قاموسنا تعطي False. [1] [2]

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

لا هنا؛ الكائن ليس مساويًا للقاموس. [1] [2]

  • SimpleNamespace تقارن سمات كائنين منها؛ المقارنة مع قاموسنا تعطي False. [1] [2]
  • على CPython 3.12.14، own وother من SimpleNamespace بالسمتين x=2 وy=5؛ نعكس ترتيب الوسيطين عند بناء other. [1] [2]
  • own==other تعطي True؛ تغيير ترتيب البناء لم يمنع المساواة هنا. [1] [2]
  • data قاموس عادي بالمفتاحين والقيمتين نفسيهما؛ own==data تعطي False. [1] [2]
  • تحكم: vars(own)==data تعطي True. vars هنا تعيد قاموس السمات؛ نقارن القاموسين، لا الكائن بالقاموس. قيم السمتين أعداد صحيحة. [1] [2]

السمات ونوع الطرفين

SimpleNamespace تقارن سمات كائنين منها؛ المقارنة مع قاموسنا تعطي False. [1] [2]

كائنان للمقارنة

على CPython 3.12.14، own وother من SimpleNamespace بالسمتين x=2 وy=5؛ نعكس ترتيب الوسيطين عند بناء other. [1] [2]

بين الكائنين

own==other تعطي True؛ تغيير ترتيب البناء لم يمنع المساواة هنا. [1] [2]

from types import SimpleNamespace own=SimpleNamespace(x=2,y=5) other=SimpleNamespace(y=5,x=2) print(own==other) [1] [2]

vars(own)==data تعطي True.
قاموس السمات.

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

data قاموس عادي بالمفتاحين والقيمتين نفسيهما؛ own==data تعطي False. [1] [2]

data={"x":2,"y":5} print(own==data) print(vars(own)==data) [1] [2]

تحكم: vars(own)==data تعطي True. vars هنا تعيد قاموس السمات؛ نقارن القاموسين، لا الكائن بالقاموس. قيم السمتين أعداد صحيحة. [1] [2]

المراجع

  1. Python SimpleNamespace
  2. Python vars

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

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