weakref_slot=True تتطلب slots=True؛ افتراضي slots هو False. [1]
الخلاصة السريعة
لا؛ الجمع بينهما مطلوب. [1]
- weakref_slot=True تتطلب slots=True؛ افتراضي slots هو False. [1]
- على CPython 3.12.14، Bad تعرف number مع weakref_slot=True وحدها؛ لا نحدد slots. [1]
- تطبيق المزخرف يرفع TypeError؛ الخطأ يقع أثناء تعريف الفئة، قبل استدعائها لإنشاء مثيل. [1]
- بعد التقاط الخطأ، الاسم Bad غير مربوط في نطاق اختبارنا الجديد. [1]
- تحكم Fixed تستخدم slots=True وweakref_slot=True: تعريفها ينجح، وFixed(7) تحمل number=7. فتحاتها number و__weakref__. نختبر فئة بلا وراثة أو فتحات مكتوبة يدويًا. [1]
شرط الخيار
weakref_slot=True تتطلب slots=True؛ افتراضي slots هو False. [1]
الخيار المنفرد
على CPython 3.12.14، Bad تعرف number مع weakref_slot=True وحدها؛ لا نحدد slots. [1]
موضع الخطأ
تطبيق المزخرف يرفع TypeError؛ الخطأ يقع أثناء تعريف الفئة، قبل استدعائها لإنشاء مثيل. [1]
from dataclasses import dataclass try: @dataclass(weakref_slot=True) class Bad:number:int except TypeError:print("TypeError") print("Bad" in globals()) [1]

الاسم والتحكم
بعد التقاط الخطأ، الاسم Bad غير مربوط في نطاق اختبارنا الجديد. [1]
@dataclass(slots=True,weakref_slot=True) class Fixed:number:int control=Fixed(7) print(control.number,Fixed.__slots__) [1]
تحكم Fixed تستخدم slots=True وweakref_slot=True: تعريفها ينجح، وFixed(7) تحمل number=7. فتحاتها number و__weakref__. نختبر فئة بلا وراثة أو فتحات مكتوبة يدويًا. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
