قائمة الحقول ليست قائمة مدخلات التهيئة. [1] [2]
الخلاصة السريعة
لا؛ يستبعد fields متغير التهيئة InitVar ولو كان مطلوبًا. [1] [2]
المثال
from dataclasses import (
dataclass, fields, InitVar)
@dataclass
class Row:
tag: str
seed: InitVar[int]
print([f.name for f in fields(Row)])
try:
Row('bud')
except TypeError:
print('TypeError')التهيئة والحقول
المصدر هنا يستبعد الحقول الظاهرية من fields، لكنه يضم InitVar إلى معاملات التهيئة. المخرجان ['tag'] ثم TypeError. تمرير Row('bud',7) ينجح؛ عدم ظهور seed لا يلغي المدخل. [1] [2]

النطاق
في مثالنا لا قيمة افتراضية لـseed. إضافتها تسمح بحذفه من الاستدعاء، لكنه يظل خارج fields. لا نختبر تهيئة مخصصة أو وراثة، ولا تثبت التعليقات النوعية فحص النوع وقت التشغيل. [1] [2]
المراجع
- Python 3.12: fields and InitVar
- CPython 3.12.14: dataclasses.py
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
