يرفض مزخرف dataclass ابنة غير مجمدة لأب dataclass مجمد. [1] [2]
الخلاصة السريعة
لا؛ تعريف ابنتنا يرفع TypeError. [1] [2]
- يرفض مزخرف dataclass ابنة غير مجمدة لأب dataclass مجمد. [1] [2]
- على CPython 3.12.14، Base تستخدم frozen=True وحقل number؛ Child ترثها وتضيف label، بمزخرف dataclass دون تحديد frozen. [1] [2]
- افتراضي frozen هو False؛ تطبيق مزخرف Child يرفع TypeError أثناء التعريف، قبل إنشاء مثيل. [1] [2]
- بعد التقاط الخطأ، Child غير مربوط في نطاقنا الجديد. [1] [2]
- تحكم: Fixed ترث Base وتستخدم frozen=True؛ control=Fixed(4,"bud") تنجح، وcontrol.number هي 4 وcontrol.label هي bud. نختبر أبًا واحدًا وابنتين مزخرفتين؛ الابنة العادية غير المزخرفة خارج المثال. [1] [2]
شرط التجميد
يرفض مزخرف dataclass ابنة غير مجمدة لأب dataclass مجمد. [1] [2]
الأب والابنة
على CPython 3.12.14، Base تستخدم frozen=True وحقل number؛ Child ترثها وتضيف label، بمزخرف dataclass دون تحديد frozen. [1] [2]
رفض التعريف
افتراضي frozen هو False؛ تطبيق مزخرف Child يرفع TypeError أثناء التعريف، قبل إنشاء مثيل. [1] [2]
from dataclasses import dataclass @dataclass(frozen=True) class Base:number:int try: @dataclass class Child(Base):label:str except TypeError:print("TypeError") print("Child" in globals()) [1] [2]

الاسم والتحكم
بعد التقاط الخطأ، Child غير مربوط في نطاقنا الجديد. [1] [2]
@dataclass(frozen=True) class Fixed(Base):label:str control=Fixed(4,"bud") print(control.number,control.label) [1] [2]
تحكم: Fixed ترث Base وتستخدم frozen=True؛ control=Fixed(4,"bud") تنجح، وcontrol.number هي 4 وcontrol.label هي bud. نختبر أبًا واحدًا وابنتين مزخرفتين؛ الابنة العادية غير المزخرفة خارج المثال. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
