تقنية

is_dataclass في بايثون: هل تعني True أن القيمة مثيل لفئة بيانات؟

is_dataclass(Packet) تعطي True.
الفئة مقبولة للفحص.

is_dataclass تقبل فئة البيانات ومثيلها؛ True وحدها لا تميز بينهما. [1]

الخلاصة السريعة

لا؛ فئة البيانات نفسها تعطي True. [1]

  • is_dataclass تقبل فئة البيانات ومثيلها؛ True وحدها لا تميز بينهما. [1]
  • على CPython 3.12.14، Packet فئة بيانات بحقل number؛ own=Packet(4). Plain فئة عادية، وcontrol مثيلها. [1]
  • is_dataclass(Packet) وis_dataclass(own) تعطيان True؛ الفئة والمثيل يشتركان في نتيجة الفحص. [1]
  • تحكم: is_dataclass(Plain) وis_dataclass(control) تعطيان False؛ الفئة العادية ومثيلها لا يحققان هذا الفحص. [1]
  • instance_only تضيف not isinstance(value,type) إلى الفحص؛ تعطي False للفئة Packet وTrue للمثيل own وFalse للتحكم. نختبر تعريفاتنا بلا وراثة أو علامات بيانات مخصصة. [1]

ما الذي تقبله الدالة؟

is_dataclass تقبل فئة البيانات ومثيلها؛ True وحدها لا تميز بينهما. [1]

الفئتان والمثيلان

على CPython 3.12.14، Packet فئة بيانات بحقل number؛ own=Packet(4). Plain فئة عادية، وcontrol مثيلها. [1]

نتيجة مشتركة

is_dataclass(Packet) وis_dataclass(own) تعطيان True؛ الفئة والمثيل يشتركان في نتيجة الفحص. [1]

from dataclasses import dataclass,is_dataclass @dataclass class Packet:number:int class Plain:pass own=Packet(4);control=Plain() print(is_dataclass(Packet),is_dataclass(own)) print(is_dataclass(Plain),is_dataclass(control)) [1]

instance_only(Packet) تعطي False.
الفحص الإضافي يستبعد الفئة.

التحكم والتمييز

تحكم: is_dataclass(Plain) وis_dataclass(control) تعطيان False؛ الفئة العادية ومثيلها لا يحققان هذا الفحص. [1]

def instance_only(value): return is_dataclass(value) and not isinstance(value,type) print(instance_only(Packet),instance_only(own),instance_only(control)) [1]

instance_only تضيف not isinstance(value,type) إلى الفحص؛ تعطي False للفئة Packet وTrue للمثيل own وFalse للتحكم. نختبر تعريفاتنا بلا وراثة أو علامات بيانات مخصصة. [1]

المراجع

  1. Python is_dataclass

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.