2017-06-29 10 views
0

私は arparseモジュールの組織内の小さな疑問を持って次のコードは、私がモジュール argparse.ArgumentParserは()クラスになるだろうargparse仮定オンラインArgparseモジュールクラスの機能

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("echo") 
args = parser.parse_args() 
print(args.echo) 

Pythonドキュメントに記載されていますがモジュール内にあるので、2行目はそのクラスのオブジェクトを作成するだけです。次の行では、というメソッドをドット演算子を使用してクラス内で定義しています。この点まではすべて理にかなっていた。私はargsが単純な変数になると思っていたが、args.echoがドット演算子を使ってアクセスするとき、argsはどのような型ですか? parser.parse_args()はArgmentParser()型のオブジェクトを返しますか? 質問があまりにも素朴すぎる場合はお詫び申し上げます。 parse_args(デフォルトで使用される

+0

'print(type(args))'を使って! – kindall

答えて

0

https://docs.python.org/3/library/argparse.html#the-namespace-object

クラスargparse.Namespace

単純なクラス)の属性を保持しているオブジェクトを作成し、それを返します。

argparse.pyファイルをディストリビューションで見つけて、Pythonを解析するエディタを使用してください。コードのほとんどはクラスです。いくつかのユーティリティベースクラス(コンテナなど)がありますが、重要なものは__all__リストでインポートされます。

インタラクティブプロセスでコードを実行し、作成されたオブジェクトを確認することも有益です。または、それぞれの文を追加して、それぞれのstrを参照してください。

parser = argparse.ArgumentParser() 

は、ArgumentParserオブジェクトを作成します。

a = parser.add_argument("echo") 

actionパラメータに従ってActionオブジェクト(Actionの実際のサブクラスを作成する。

args = parser.parse_args() 

Namespaceオブジェクトを作成

vars(args) 

argsから辞書オブジェクトを作成属性。

+0

答えをありがとう。私はさらにNamespaceオブジェクトを調べます。ありがとう –

関連する問題