2016-06-01 19 views
6

In una documentazione di Python come si dovrebbe documentare :rtype: per una funzione che può restituire più tipi di dati possibili?Come documentare: rtype: per una funzione che restituisce più tipi di dati possibili?

Ad esempio, se una funzione può restituire defaultdict OR dict O list, in base ai parametri delle funzioni, come si documenta questo?

Codice esempio:

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 

risposta

7

È possibile utilizzare 'o 'esplicitamente nel rtype

:rtype: collections.defaultdict or dict or list 

variante

:rtype: collections.defaultdict | dict | list 
Problemi correlati