對于涉及多個腳本(資料處理、模型調優、模型訓練、測驗等)的專案,我可能會將所有<class 'argparse.ArgumentParser'>物件作為我命名的模塊中每個腳本任務的函式回傳值cli.py。但是,在呼叫腳本本身 ( __main__) 中,在呼叫 之后args = parser.parse_args(),如果我輸入args.VS Code,我不會得到特定于該物件的建議屬性。如何argparse.NameSpace在 VS Code 中獲取物件的建議屬性?
例如,
"""Module for command line interface for different scripts."""
import argparse
def some_task_parser(description: str) -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description=description)
parser.add_argument('some_arg')
return parser
然后
"""Script for executing some task."""
from cli import some_task_parser
if __name__ == '__main__':
parser = some_task_parser('arbitrary task')
args = parser.parse_args()
print(args.) # I WANT SUGGESTED ATTRIBUTES (SUCH AS args.some_arg) TO POP UP!!
uj5u.com熱心網友回復:
我不知道 VSCode,在ipython會話中,選項卡完成確實顯示了Namespace. argparse.Namespace是一個比較簡單的物件類。你想要的,我想,只是attributes這個物件的。
In [238]: args = argparse.Namespace(test='one', foo='three', bar=3)
In [239]: args
Out[239]: Namespace(bar=3, foo='three', test='one')
In [240]: args.
bar test
foo args.txt
但是這些屬性在開發程序中將不可用。它們在運行時由決議操作放置在那里。無法從parser設定中可靠地推斷出它們。當然argparse不提供這樣的幫助。
我經常建議開發人員包括一個
print(args)
在除錯階段,他們可以清楚地了解決議器的作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358938.html
