2016-08-23 4 views
0

名前付きタプルを使用していくつかのコードをクリーンアップして、複数の関数を渡すための複数の変数を保持することを検討します。以下は簡単な例です(私は実際にはさらにいくつかの議論があります)。後名前付きタプルを文書化する標準的な方法は何ですか?

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のスタイルガイドを追ってきたが

このシナリオでは、名前付きタプルの文書化についてどう思いますか?明らかに、現在設定されているように、名前付きタプル内の型に関する情報はありません。ここでドキュメンテーション文字列を拡張するための承認された方法がありますか、それが定義されているところの名前付きタプルを文書化します(表示されていません)。

私はあなたがこのマナーのクラスを文書化できると知っていますが、私は変数を保持する以外の目的を持っていないので、クラスを使用しないようにしています。

+1

なぜそれという名前のタプルのですか? {ident:session}の(任意の)辞書か、単にセッションのリストだけを取るのはなぜですか?あなたは実際に渡された名前付きタプルを検証していますか(タプルという名前の私の経験では、メソッド引数) –

+0

特別な理由はありません。私は両方を考え、namedtupleを任意に選択しました。これはもっと軽いと思われ、値がすべて同じタイプの場合は辞書を使用します(タイプを混在させることができます)。とにかく、私はその質問が両方とも同じだと思う - より一般的な意味で、関数に渡すときに混合型を含むとき、それを記録する最良の方法は何ですか?たぶんクラスを使用するだけで(クラス文書の型を文書化する)、名前付きタプル/辞書が初期化された場所に戻って心配する必要はありません。 – latetojoin

答えて

1

私は、Googleのスタイルガイドに精通していないですが、これについてはどのように:namedtupleまたはタプルまたはリストまたは何のため

、それは私が上でこの

def my_function(sessions, some_var, another): 
    """Blah blah. 

    Args: 
     sessions (sequence): A sequence of length n that 
          holds all the database sessions. 
          In position 0 need bla bla 
          In position 1 need ble ble 
          ... 
          In position n-1 need blu blu 
     some_var (str): Yada yada. 
     another (int): Yada yada. 
    """  

のようなもののために行くだろう交換可能です一方、私は多分、その後、辞書のためのこの

def my_function(sessions, some_var, another): 
    """Blah blah. 

    Args: 
     sessions (object): A object that holds all the database sessions. 
          It need the following attributes 
          bla_bla is ... 
          ble_ble is ... 
          ... 
          blu_blu is ... 
     some_var (str): Yada yada. 
     another (int): Yada yada. 
    """  

のようなものをnamedtupleの属性を使用している場合、これはどう

def my_function(sessions, some_var, another): 
    """Blah blah. 

    Args: 
     sessions (map): A dictionary-like object that holds all the 
         database sessions, it need the following keys 
         bla_bla is ... 
         ble_ble is ... 
          ... 
         blu_blu is ... 
     some_var (str): Yada yada. 
     another (int): Yada yada. 
    """  

または各インスタンスで

def my_function(sessions, some_var, another): 
    """Blah blah. 

    Args: 
     sessions (customclass): Holds all the database sessions. 
     some_var (str): Yada yada. 
     another (int): Yada yada. 
    """ 

だけで機能が正常に動作する必要最小限の機能を求める

関連する問題