2017-09-21 3 views
1

Wie können Kommentare für Wörterbuchelemente, die als Argumente an Funktionen übergeben werden, richtig angegeben werden? Hier ist ein Beispiel unten mit Styling, das ich aus (basierend auf Google-Dokument Stil für Sphinx):Python-Wörterbücher Kommentare

def class_function_w_dict_argument(self, T_in, c_temps): 
    """ This calculates things with temperatures 

    Notes: 
     All temperatures should be given in Kelvin 

    Args: 
     T_in (float): Known temperature (K) 
     c_temps (dict): Dictionary of component temperatures 
      {T1 (float): temperature (K) 
      T2 (float): temperature (K) 
      T3 (float): temperature (K) 
      T4 (float): temperature (K) 
      T5 (float): temperature (K)} 

    Returns: 
     T_out (float): Calculated temperature 
    """ 
+0

der Regel in In diesem Fall benutzt man keine Wörterbücher, sondern ** benutze Parameter **: 't1',' t2', usw. Damit die Tatsache, dass die Parameter übergeben werden, ist * by design *. –

+0

Ich habe eine andere Klasse, die das formatierte Wörterbuch mit den Temperaturen erzeugt. Es wäre schön, in der Lage zu sein, das ganze Wörterbuch (oder eines, das vom Benutzer gemacht wird) zu übergeben, anstatt es in seine einzelnen Komponenten aufzuteilen und dann jeweils als ein Argument oder Klassenparameter. –

+0

Suchen Sie nach einer bestimmten Syntax, die von Sphinx * * benötigt wird? Ansonsten sehe ich nicht, dass dies nicht primär auf Meinungen beruht. – chepner

Antwort

-2

Sie nur das Wörterbuch-Format in der def Zeile mit der Eingabe-Modul Dict Klasse angeben mag. (Wenn Sie sind in der Lage, eine neuere Python 3-Version verwenden)

from typing import Dict 

class Foo: 
def class_function_w_dict_argument(self, T_in: float, c_temps: Dict[float,float]): 
    """" 
    Notes: 
     All temperatures should be given in Kelvin 

    Args: 
     T_in (float): Known temperature (K) 
     c_temps (Dict[float, float]): Dictionary of component temperatures 

    Returns: 
     T_out (float): Calculated temperature 
    """ 
    pass 

Sie zusätzlich einen Blick auf Typ-Aliasnamen zu übernehmen möchten:

Temperature = float 
TempDict = Dict[Temperature, Temperature] 

und TypeVar:

from typing import TypeVar 
Temperature = TypeVar('Temperature', float) 
some_temperature = Temperature(1.56) 
+0

Ah, aber das Problem ist, dass die Schlüssel zum Wörterbuch auch wichtig sind, die nicht durch diese Methode beschrieben werden (es sei denn, ich vermisse etwas) –

+0

Ich fügte ein bisschen mehr hinzu. Kasse Typ Alias ​​und TypeVar. Sie könnten einen Alias ​​für KnownTemperature und einen anderen für ComponentTemperature erstellen. –