تقنية

parents في argparse: هل يصل الخيار الجديد إلى الابن؟

خيار بعد إنشاء الابن؛ argparse; parent:add_helpFalse,--tag; child:parents[parent]; then parent:--label; input:["--label","bud"]; tag:None; extra:["--label","bud"]
لاحق.

الخيار الجديد لا يصل للابن الموجود هنا. [1] [2]

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

لا إذا أُضيف للأب بعد إنشاء الابن هنا. [1] [2]

  • الخيار الجديد لا يصل للابن الموجود هنا. [1] [2]
  • على CPython 3.12.14، نعرّف --tag بأب مع add_help=False، ثم ننشئ الابن بparents=[parent]؛ نضيف --label للأب بعده. [1] [2]
  • parse_known_args(["--label","bud"]) يعطي {"tag":None} ويترك ["--label","bud"]؛ مساحة أسماء جديدة. [1] [2]
  • البناء يجمع أفعال الأب هنا؛ إضافة خيار لاحقًا لا تُحدّث الابن الموجود. المتبقي هنا هو قائمة الوسيطات غير المستهلكة. [1] [2]
  • تحكم مستقل: تعريف --tag و--label قبل الابن؛ المدخل نفسه يعطي {"tag":None,"label":"bud"} ولا يترك وسيطات. نفحص تخزينًا عاديًا. [1] [2]

ابن موجود

الخيار الجديد لا يصل للابن الموجود هنا. [1] [2]

ترتيب البناء

على CPython 3.12.14، نعرّف --tag بأب مع add_help=False، ثم ننشئ الابن بparents=[parent]؛ نضيف --label للأب بعده. [1] [2]

خيار غير معروف

parse_known_args(["--label","bud"]) يعطي {"tag":None} ويترك ["--label","bud"]؛ مساحة أسماء جديدة. [1] [2]

import argparse parent=argparse.ArgumentParser(add_help=False) parent.add_argument("--tag") own=argparse.ArgumentParser(parents=[parent]) parent.add_argument("--label") ns,extra=own.parse_known_args(["--label","bud"]) print(vars(ns),extra) [1] [2]

تحكم مستقل؛ الخياران قبل الابن؛ argparse; parent:add_helpFalse,--tag,--label; child:parents[parent]; input:["--label","bud"]; tag:None; label:"bud"; extra:[]
سابق.

تعريف قبل البناء

البناء يجمع أفعال الأب هنا؛ إضافة خيار لاحقًا لا تُحدّث الابن الموجود. المتبقي هنا هو قائمة الوسيطات غير المستهلكة. [1] [2]

cp=argparse.ArgumentParser(add_help=False) cp.add_argument("--tag") cp.add_argument("--label") control=argparse.ArgumentParser(parents=[cp]) cns,cextra=control.parse_known_args(["--label","bud"]) print(vars(cns),cextra) [1] [2]

تحكم مستقل: تعريف --tag و--label قبل الابن؛ المدخل نفسه يعطي {"tag":None,"label":"bud"} ولا يترك وسيطات. نفحص تخزينًا عاديًا. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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