KW_ONLY علامة نوعية لفاصل؛ اسمه مهمل، والحقول اللاحقة له تمرر بالكلمات المفتاحية في التهيئة. [1]
الخلاصة السريعة
لا؛ اسم الفاصل ليس حقلًا فعليًا. [1]
- KW_ONLY علامة نوعية لفاصل؛ اسمه مهمل، والحقول اللاحقة له تمرر بالكلمات المفتاحية في التهيئة. [1]
- على CPython 3.12.14، Packet تعرف number:int ثم _:KW_ONLY ثم label:str؛ own=Packet(4,label="bud"). [1]
- أسماء حقول fields(Packet) هي number ثم label فقط؛ اسم الفاصل مستبعد، وlabel باقية ضمن الحقول. [1]
- hasattr(own,"_") تعطي False؛ لا نضع قيمة لاسم الفاصل في تعريفنا. [1]
- Packet(4,"bud") ترفع TypeError؛ الوسيط الثاني يحتاج اسمًا. تحكم بتمرير label باسمها: إنشاء own نجح، وown.number هي 4 وown.label هي bud. نستخدم تهيئة مولدة وفاصلًا واحدًا دون وراثة. [1]
العلامة والاسم
KW_ONLY علامة نوعية لفاصل؛ اسمه مهمل، والحقول اللاحقة له تمرر بالكلمات المفتاحية في التهيئة. [1]
موضع الفاصل
على CPython 3.12.14، Packet تعرف number:int ثم _:KW_ONLY ثم label:str؛ own=Packet(4,label="bud"). [1]
أسماء الحقول
أسماء حقول fields(Packet) هي number ثم label فقط؛ اسم الفاصل مستبعد، وlabel باقية ضمن الحقول. [1]
from dataclasses import dataclass,fields,KW_ONLY @dataclass class Packet: number:int _:KW_ONLY label:str own=Packet(4,label="bud") print([entry.name for entry in fields(Packet)]) print(hasattr(own,"_")) [1]

غياب السمة والتحكم
hasattr(own,"_") تعطي False؛ لا نضع قيمة لاسم الفاصل في تعريفنا. [1]
try:Packet(4,"bud") except TypeError:print("TypeError") print(own.number,own.label) [1]
Packet(4,"bud") ترفع TypeError؛ الوسيط الثاني يحتاج اسمًا. تحكم بتمرير label باسمها: إنشاء own نجح، وown.number هي 4 وown.label هي bud. نستخدم تهيئة مولدة وفاصلًا واحدًا دون وراثة. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
