web-dev-qa-db-ja.com

複数の可能なデータ型を返す関数の:rtype:をどのように文書化しますか?

Python docstringでは、どのように:rtype:複数の可能なデータ型を返すことができる関数については?

たとえば、関数がdefaultdict OR dict OR listに基づいて、関数パラメータ、これをどのように文書化しますか?

コード例:

from collections import defaultdict

def read_state(state_file, state_file_type='defaultdict'):
    """Deserialize state file or create empty state and return it.

    :param state_file: The path and file name of state file to read.
    :type state_file: str
    :param state_file_type: Data type in which state is stored.
    :type state_file_type: str
    :return: Current or new empty state.
    :rtype: ????? 
    """
    if os.path.exists(state_file):
        with open(state_file) as conf_fo:
            state = json.load(conf_fo)
    Elif state_file_type == 'defaultdict':
        state = defaultdict(lambda: defaultdict(list))
    Elif state_file_type == 'dict':
        state = {}
    Elif state_file_type == 'list':
        state = []
    else:
        raise TypeError("State file type not defined.")
    return state
14
stack_lech

私は同じような質問に出くわして自分自身を見つけたと思います: type-hintsを使用して複数の戻り値の型を指定する方法

:rtype:することができます

:rtype: Union[collections.defaultdict, dict, list]
9
stack_lech

Rtypeで「または」を明示的に使用できます

:rtype: collections.defaultdict or dict or list

バリアント

:rtype: collections.defaultdict | dict | list
13
Marcel Wilson