field ترفض الجمع بين default وdefault_factory؛ اختر طريقة واحدة للقيمة الافتراضية. [1]
الخلاصة السريعة
لا؛ field بالخيارين ترفع ValueError في اختبارنا. [1]
- field ترفض الجمع بين default وdefault_factory؛ اختر طريقة واحدة للقيمة الافتراضية. [1]
- على CPython 3.12.14، make بلا وسائط؛ تعيد leaf وتسجل make في calls. نقترح bud قيمة افتراضية. [1]
- field(default="bud",default_factory=make) ترفع ValueError أثناء استدعاء field نفسها. [1]
- calls تبقى []؛ المصنع لم يستدع في المحاولة المرفوضة. [1]
- تحكم Box تحدد المصنع وحده: control=Box() تحمل tag=leaf والسجل ["make"]. تعريف الفئة وحده لم يستدع المصنع؛ إنشاء المثيل استدعاه مرة. نستخدم تهيئة مولدة وحقلًا واحدًا. [1]
بديلان للافتراضي
field ترفض الجمع بين default وdefault_factory؛ اختر طريقة واحدة للقيمة الافتراضية. [1]
المصنع والقيمة
على CPython 3.12.14، make بلا وسائط؛ تعيد leaf وتسجل make في calls. نقترح bud قيمة افتراضية. [1]
رفض الجمع
field(default="bud",default_factory=make) ترفع ValueError أثناء استدعاء field نفسها. [1]
from dataclasses import dataclass,field calls=[] def make():calls.append("make");return "leaf" try:field(default="bud",default_factory=make) except ValueError:print("ValueError") print(calls) [1]

السجل والتحكم
calls تبقى []؛ المصنع لم يستدع في المحاولة المرفوضة. [1]
@dataclass class Box:tag:str=field(default_factory=make) control=Box() print(control.tag,calls) [1]
تحكم Box تحدد المصنع وحده: control=Box() تحمل tag=leaf والسجل ["make"]. تعريف الفئة وحده لم يستدع المصنع؛ إنشاء المثيل استدعاه مرة. نستخدم تهيئة مولدة وحقلًا واحدًا. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
