Ich würde ja stets über Kelvin gehen. Wenn man n Größen hat, macht es wenig Sinn n*(n-1)-Konverter zu schreiben, sondern nur jeweils einen fürs hin- und herkonvertieren in diese Basis-Einheit. (Ähnlich dem ppm-Format bei Bildern, welches ImageMagicks convert nutzt)
Ok, bei 3 Einheiten gewinnt man nicht wirklich etwas, aber kommen noch mehr hinzu, wird es einfacher
Desweiteren wäre eine einzige convert-Funktion eine Überlegung wert, die anhand eines Musters die Konvertierung vornimmt:
Code: Alles auswählen
def convert(value, method="c->k"):
# mapping von einheit in kelvin
to_kelvin = {
"c": c2k,
# usw.
}
# mapping von kelvin in einheit
from_kelvin = {
"c": k2c
}
# jetzt method aufsplitten und funktionen aus dem mapping callen
#Wert zurückgeben
Alternativ könnte man auch eine Temperatur-Klasse erstellen, die ähnlich dem Unicode -> Byte Konzept arbeitet. Sprich man muss eine Art "encoding" und "decoding" angeben beim Setzen bzw. Auslesen, wenn man eine andere Einheit haben will als Kelvin.
Code: Alles auswählen
>>> tmp = Temperature(42.5).decode("c")
"278k"
>>> tmp.encode("f")
"xyzf"
Man kann also auch aus einem kleinen Projekt interessante Dinge basteln