تقنية

get_annotations في بايثون: هل يضم تعليقات الصنف الأب؟

قاموس الأب والابن
تفسير توضيحي [1] [2]

فرّق بين الوراثة وقاموس التعليقات المقروء. [1] [2]

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

لا؛ قاموس الابن فارغ في مثالنا. [1] [2]

  • تعليق Parent.tag هو int: True. [1] [2]
  • لم نكتب تعليقًا في Child. [1] [2]
  • نتيجة get_annotations(Child) هي {}. [1] [2]
  • يبقى Child فرعًا من Parent: True. [1] [2]
  • فحص 3.12.14؛ تعريف صنفين عاديين دون إنشاء مثيلات منهما. [1] [2]

المثال

تعليق Parent.tag هو int: True. [1] [2]

لم نكتب تعليقًا في Child. [1] [2]

import inspect
class Parent:
    tag:int
class Child(Parent):pass
print(inspect.get_annotations(Parent)["tag"]is int)
print(inspect.get_annotations(Child))
print(issubclass(Child,Parent))

[1] [2]

القاموس والوراثة

نتيجة get_annotations(Child) هي {}. [1] [2]

الدالة تتجاهل تعليقات الأصناف الموروثة. [1] [2]

يبقى Child فرعًا من Parent: True. [1] [2]

النتيجة: True ثم {} ثم True. [1] [2]

القاموس وعلاقة الوراثة
تفسير توضيحي [1] [2]

النطاق

فحص 3.12.14؛ تعريف صنفين عاديين دون إنشاء مثيلات منهما. [1] [2]

القاموس الفارغ لا يثبت غياب علاقة الوراثة؛ لا نفحص صحة قيم أو نقيّم تعليقات نصية. [1] [2]

المراجع

  1. Python 3.12: get_annotations
  2. CPython 3.12.14: class annotations
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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