pythonのdocstringはリテラル文字列として指定する必要があります。しかし、いくつかの関数(例えば、異なるコンストラクタ)に似たドキュメントストリングを持たせることや、複数のアクセスメソッドが同じ引数リストを受け入れて(同じ隠しメソッドに依存する)便利なこともあるので、同じ説明はどこにでもあります。そのような場合は、__doc__
に割り当てることによってドキュメントストリングを構築することができます。単純なデコレータで行います。システムはとてもうまく動作します(Python 2で)、私はそれがどのようにシンプルで明確でカプセル化されているかに満足しています。デコレータでpythonのドキュメントストリングを変更する:良いアイデアですか?
質問:これは良い考えですか?特に、この設定で混乱するツールがあるかどうか(例えば、バイトコードではなくソースからドキュメントストリングを抽出するもの)。ソリューションはまだPython 3で動作する予定ですか?これを避けるためには他の理由や状況がありますか?
「異なるコンストラクタ」?私はあなたが何らかの種類のファクトリ関数を意味すると仮定します。なぜなら、あなたは '__init__'を1つだけ持つことができるからです。 –
「工場機能」が正しいとは思わない。私は同じクラスのインスタンスを作成するクラスの静的メンバーを参照していました。彼らはすべてそれを直接サポートする言語で多形のコンストラクタになります。しかし、はい、ファクトリ関数は別のユースケースかもしれません。 – alexis
私はそれらを一種の工場と考えています。静的メンバ関数と空き関数(C++の用語を使用する)との間には、名前空間以外の違いはありません。 Pythonには、「クラスメソッド」と「静的メソッド」という概念があります。 –