تقنية

pyclbr في بايثون: لماذا تغيب الدالة عن readmodule؟

أسماء المستوى الأعلى في واجهتين
في ملفنا. [1] [2]

نقرأ ملفًا مؤلفًا في مجلد مؤقت. [1] [2]

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

لأن readmodule يعرض أوصاف الأصناف. [1] [2]

  • الأولى تطبع ['Frame']. [1] [2]
  • readmodule_ex تطبع ['Frame', 'measure']. [1] [2]
  • size تظهر داخل Frame.children؛ الناتج ['size']. [1] [2]
  • الإسناد level=7 لا يضيف وصفًا. [1] [2]
  • الأوصاف ليست كائنات التنفيذ. اختبرنا 3.12.14. [1] [2]

المثال

import pyclbr, tempfile
from pathlib import Path
src='level=7\ndef measure():\n return 2\nclass Frame:\n def size(self):\n  return 4\n'
with tempfile.TemporaryDirectory() as folder:
 Path(folder,'own_frame.py').write_text(src,encoding='utf-8')
 a=pyclbr.readmodule('own_frame',[folder])
 b=pyclbr.readmodule_ex('own_frame',[folder])
 print(sorted(a))
 print(sorted(b))
 print(sorted(b['Frame'].children))

[1] [2]

المستوى الأعلى والتداخل

الاسم هنا يخص وصفًا للدالة أو الصنف. الأولى تصفي أوصاف الأصناف من الشجرة؛ الموسعة تحتفظ بالدالة العليا أيضًا. الطريقة داخل الصنف تُقرأ من أبنائه، ولا تصبح اسمًا أعلى. فرزنا الأسماء للعرض. [1] [2]

طريقة size داخل وصف Frame
أبناء الصنف. [1] [2]

حدود القراءة

قرأنا المصدر دون استيراده. لا تستنتج قيم 2 و4 من قائمة الأسماء؛ لم نستدع الدالتين. اقتصرنا على ملف بسيط بلا استيرادات أو وراثة؛ لا نجرب الحزم أو الامتدادات. [1] [2]

المراجع

  1. Python: pyclbr
  2. CPython3.12.14: pyclbr.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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

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