2016-06-01 27 views
6

In einem Python-Docstring wie sollte man die :rtype: für eine Funktion dokumentieren, die mehrere mögliche Datentypen zurückgeben kann?Wie dokumentiere ich: rtype: für eine Funktion, die mehrere mögliche Datentypen zurückgibt?

Zum Beispiel, wenn eine Funktion defaultdict ODER dict ODER list, basierend auf den Funktionen Parameter zurückgeben kann, wie dokumentieren Sie dies?

Code-Beispiel:

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 

Antwort

7

sein können, können Sie verwenden ‚oder 'explizit in der Art

:rtype: collections.defaultdict or dict or list 

Variante

:rtype: collections.defaultdict | dict | list