名前付きタプルを使用していくつかのコードをクリーンアップして、複数の関数を渡すための複数の変数を保持することを検討します。以下は簡単な例です(私は実際にはさらにいくつかの議論があります)。後名前付きタプルを文書化する標準的な方法は何ですか?
def my_function(session_cass, session_solr, session_mysql, some_var, another):
"""Blah blah.
Args:
session_cass (Session): Cassandra session to execute queries with.
session_solr (SolrConnection): Solr connection to execute requests with.
session_mysql (connection): MySQL connection to execute queries with.
some_var (str): Yada yada.
another (int): Yada yada.
"""
::前
ドキュメンテーション文字列についてはdef my_function(sessions, some_var, another):
"""Blah blah.
Args:
sessions (namedtuple): Holds all the database sessions.
some_var (str): Yada yada.
another (int): Yada yada.
"""
、私は私が本当に好き(this postに触発さ)タイプのほかに、Googleのスタイルガイドを追ってきたが
このシナリオでは、名前付きタプルの文書化についてどう思いますか?明らかに、現在設定されているように、名前付きタプル内の型に関する情報はありません。ここでドキュメンテーション文字列を拡張するための承認された方法がありますか、それが定義されているところの名前付きタプルを文書化します(表示されていません)。
私はあなたがこのマナーのクラスを文書化できると知っていますが、私は変数を保持する以外の目的を持っていないので、クラスを使用しないようにしています。
なぜそれという名前のタプルのですか? {ident:session}の(任意の)辞書か、単にセッションのリストだけを取るのはなぜですか?あなたは実際に渡された名前付きタプルを検証していますか(タプルという名前の私の経験では、メソッド引数) –
特別な理由はありません。私は両方を考え、namedtupleを任意に選択しました。これはもっと軽いと思われ、値がすべて同じタイプの場合は辞書を使用します(タイプを混在させることができます)。とにかく、私はその質問が両方とも同じだと思う - より一般的な意味で、関数に渡すときに混合型を含むとき、それを記録する最良の方法は何ですか?たぶんクラスを使用するだけで(クラス文書の型を文書化する)、名前付きタプル/辞書が初期化された場所に戻って心配する必要はありません。 – latetojoin