質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4511閲覧

変数に対するdocstringの書き方

Ykkykk

総合スコア140

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/10/09 07:49

現在、docstringの書き方を勉強しております。
クラスや関数に対して付与するdocstringの書き方は、検索すると出てきますが、変数に対してはどのように付与すればよいのでしょうか?

変数がどのような変数なのかを明示するために、変数に対してコメント行を付与しており、そのようなコメント行をdocstringへと書き換えたいと思っています。

Python3

1def function(): 2 # これは変数です 3 a = "AAA"

例えば、上記のような関数がある場合、

Python3

1def function(): 2""" 3これは関数です。 4""" 5 a = "AAA" 6 """ 7 これは変数です。 8 """

のような書き方をすることになるのでしょうか?
加えて、あるひとまとまりの変数の一群に対してそのまとまりを説明するコメントを付与する場合はどうなるのでしょうか?

Python3

1def function(): 2 # 変数の中身は文字列です。 3 a = "AAA" 4 b = "BBB" 5 c = "CCC" 6 7  # 変数の中身は数値です。 8 X = 1 9 Y = 2 10 Z = 3

以上のような関数の場合、docstringは、

Python3

1def function(): 2""" 3これは関数です。 4""" 5 a = "AAA" 6 b = "BBB" 7 c = "CCC" 8 """ 9 変数の中身は文字列です。 10 """ 11 X = 1 12 Y = 2 13 Z = 3 14 """ 15 変数の中身は数値です。 16  """

のような書き方をすることになるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

docstringは「外から見るために」書くものです。

必要なのは引数と返り値、あと属性値や副作用の情報ですね。

関数の内部でだけ使う変数については、docstringに記述する必要はありません(というか書くべきではありません)。通常のコメントで十分です。

投稿2018/10/09 08:03

編集2018/10/09 08:21
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ykkykk

2018/10/09 08:11

ご回答いただきありがとうございます。 docstringで書く部分と通常のコメント行を混ぜて書いてもよいのですね。 クラスのメソッドにある変数で他のメソッドでも使うような場合はどうなるのでしょうか??
hayataka2049

2018/10/09 08:18 編集

まずはっきりさせておきますが、docstringは「クラス、関数、モジュールの最初の式である文字列リテラル」です。 https://docs.python.jp/3/glossary.html#term-docstring なので変数の前後に"""で囲ったリテラルを書いたとしても、それはただのコメントであってdocstringにはなりません。
hayataka2049

2018/10/09 08:27 編集

>クラスのメソッドにある変数で他のメソッドでも使うような場合 クラス変数やインスタンス変数のことでしょうか。 「他のメソッドでも使う」がオブジェクトの内部で状態を保持するためだけに使う、ということであれば、記載する必要は全くありません。 ただし、属性値としてユーザー(自分以外の、自分の書いたクラスや関数を単に使うだけの人。ライブラリを書いているなら単純にそのユーザーですし、あるいは何らかのプロジェクトのコードなら、共同開発者などが該当します)がアクセスすることも意図するのであれば、クラスの属性として書いておいて良いでしょう。というか書いておいてください。 要するに、ユーザーがその関数・クラス・メソッドを使う上で必要な情報を書けば良いのであって、「変数の説明のコメントをdocstringにしたい」という発想がそもそも間違っています。
Ykkykk

2018/10/09 08:25

詳細にお教えいただきありがとうございます。 納得できました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問