Pythonでモジュール定数を文書化する方法は?
質問
モジュールを持っています。
errors.py
で、いくつかのグローバル定数が定義されています(注:Pythonが定数を持たないことは理解していますが、私は慣習的にUPPERCASEを使ってそれらを定義しています)。
"""Indicates some unknown error."""
API_ERROR = 1
"""Indicates that the request was bad in some way."""
BAD_REQUEST = 2
"""Indicates that the request is missing required parameters."""
MISSING_PARAMS = 3
reStructuredTextを使用して、これらの定数をどのように文書化すればよいのでしょうか?ご覧のように、私はそれらの上にdocstringをリストアップしましたが、私はそれを行うことを示す任意のドキュメントを見つけられませんでした、私はちょうど推測としてそれをしました。
どのように解決するのですか?
残念ながら、変数(と定数)にはdocstringがありません。結局のところ、変数は単なる整数の名前であり、数値に docstring を付けたいとは思わないでしょう。
1
という数字にdocstringを付けたいとは思わないでしょう。
stdlib のほとんどのモジュールを見てみると、例えば
pickle
のように、stdlib のほとんどすべてのモジュールを見てみると、彼らが使っている唯一のドキュメントがコメントであることがわかるでしょう。そして、そう、それはつまり
help(pickle)
はこれを示しているだけです。
DATA
APPEND = b'a'
APPENDS = b'e'
…
... コメントは完全に無視します。もしあなたのドキュメントをビルトインヘルプに表示させたいなら、モジュールのdocstringにそれらを追加しなければならず、それは必ずしも理想的ではありません。
しかし、Sphinxはビルトインヘルプができる以上のことをすることができます。定数のコメントを抽出するように設定したり、あるいは
autodata
を使って半自動的に行うこともできます。例えば
#: Indicates some unknown error.
API_ERROR = 1
複数
#:
の行を代入文の前に置くか、あるいは単一の
#:
のコメントは、実質的に autodoc によってピックアップされたオブジェクトの docstring と同じように動作します。これは、インライン rST を処理し、変数名の rST ヘッダーを自動生成することを含みます。
副次的なメモとして、あなたは
enum
のような定数ではなく、backport.enum
パッケージがありますし、3.2+なら
flufl.enum
(これは同一ではありませんが、stdlib モジュールの主なインスピレーションとなったので、似ています) を 2.6+ 用に提供しています。
列挙型インスタンス(
flufl.enum
ではなく、stdlib/backport バージョン) は、docstring を持つこともできます。
class MyErrors(enum.Enum):
"""Indicates some unknown error."""
API_ERROR = 1
"""Indicates that the request was bad in some way."""
BAD_REQUEST = 2
"""Indicates that the request is missing required parameters."""
MISSING_PARAMS = 3
には残念ながら表示されませんが
help(MyErrors.MISSING_PARAMS)
に表示されますが、それらはSphinx autodocが拾うことができるdocstringです。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] 変数の文字列