None قيمة افتراضية صحيحة؛ field(default=None) تختلف عن field() دون افتراضي. [1]
الخلاصة السريعة
لا؛ None هنا قيمة، وليست غيابًا للافتراضي. [1]
- None قيمة افتراضية صحيحة؛ field(default=None) تختلف عن field() دون افتراضي. [1]
- على CPython 3.12.14، Box تعرف item:object=field(default=None)؛ نستخدم تهيئة مولدة. [1]
- own=Box() تنجح دون وسيط؛ own.item هي None. غياب الوسيط يستعمل الافتراضي المحدد. [1]
- تحكم Plain تعرف item:object=field() دون افتراضي؛ Plain() ترفع TypeError لأن وسيط الحقل مطلوب. [1]
- control=Plain(None) تنجح، وcontrol.item هي None؛ تمرير القيمة يختلف عن حذف الوسيط. own.item تبقى None. نختبر حقلًا واحدًا دون وراثة أو مصنع أو تهيئة مخصصة. [1]
قيمة مقابل غيابها
None قيمة افتراضية صحيحة؛ field(default=None) تختلف عن field() دون افتراضي. [1]
افتراضي معلن
على CPython 3.12.14، Box تعرف item:object=field(default=None)؛ نستخدم تهيئة مولدة. [1]
حذف الوسيط
own=Box() تنجح دون وسيط؛ own.item هي None. غياب الوسيط يستعمل الافتراضي المحدد. [1]
from dataclasses import dataclass,field @dataclass class Box:item:object=field(default=None) own=Box() print(own.item is None) [1]

حقل مطلوب وتحكم
تحكم Plain تعرف item:object=field() دون افتراضي؛ Plain() ترفع TypeError لأن وسيط الحقل مطلوب. [1]
@dataclass class Plain:item:object=field() try:Plain() except TypeError:print("TypeError") control=Plain(None) print(control.item is None) [1]
control=Plain(None) تنجح، وcontrol.item هي None؛ تمرير القيمة يختلف عن حذف الوسيط. own.item تبقى None. نختبر حقلًا واحدًا دون وراثة أو مصنع أو تهيئة مخصصة. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
