تقنية

slots=True في dataclass: هل تعيد الفئة الأصلية نفسها؟

Slotted is Original: False.
الفئتان مختلفتان.

slots=True تجعل dataclass تعيد فئة جديدة بدل الأصلية؛ الافتراضي يعيد الفئة نفسها. [1]

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

لا؛ الناتج فئة أخرى. [1]

  • slots=True تجعل dataclass تعيد فئة جديدة بدل الأصلية؛ الافتراضي يعيد الفئة نفسها. [1]
  • على CPython 3.12.14، Original تعرف number؛ نحفظ ناتج dataclass(Original,slots=True) باسم Slotted. [1]
  • Slotted is Original تعطي False؛ المقارنة تفحص هوية الفئتين، لا اسميهما. [1]
  • own=Slotted(4): own.number هي 4، وtype(own) is Slotted تعطي True؛ ننشئ المثيل من الفئة المعادة. [1]
  • تحكم مستقل: Plain تعرف number؛ Decorated=dataclass(Plain) بالإعدادات الافتراضية. Decorated is Plain تعطي True، وcontrol=Decorated(4) تحمل 4. نختبر تعريفين بلا وراثة أو فتحات يدوية. [1]

ما الذي تعيده الدالة؟

slots=True تجعل dataclass تعيد فئة جديدة بدل الأصلية؛ الافتراضي يعيد الفئة نفسها. [1]

حفظ الفئة المعادة

على CPython 3.12.14، Original تعرف number؛ نحفظ ناتج dataclass(Original,slots=True) باسم Slotted. [1]

اختلاف الهوية

Slotted is Original تعطي False؛ المقارنة تفحص هوية الفئتين، لا اسميهما. [1]

from dataclasses import dataclass class Original:number:int Slotted=dataclass(Original,slots=True) own=Slotted(4) print(Slotted is Original) print(own.number,type(own) is Slotted) [1]

Decorated is Plain: True.
الافتراضي يعيد الأصل.

المثيل والتحكم

own=Slotted(4): own.number هي 4، وtype(own) is Slotted تعطي True؛ ننشئ المثيل من الفئة المعادة. [1]

class Plain:number:int Decorated=dataclass(Plain) control=Decorated(4) print(Decorated is Plain,control.number) [1]

تحكم مستقل: Plain تعرف number؛ Decorated=dataclass(Plain) بالإعدادات الافتراضية. Decorated is Plain تعطي True، وcontrol=Decorated(4) تحمل 4. نختبر تعريفين بلا وراثة أو فتحات يدوية. [1]

المراجع

  1. Python slots

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

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