Conversion d'unités en Python

SymPy est un excellent outil pour faire des conversions d'unités en Python:

>>> from sympy.physics import units
>>> 12. * units.inch / units.m
0.304800000000000

Vous pouvez facilement rouler vos propres:

>>> units.BTU = 1055.05585 * units.J
>>> units.BTU
1055.05585*m**2*kg/s**2

Cependant, je ne peut pas mettre en œuvre ce dans mon application, sauf si je peux convertir des degrés C (absolue) à K degrés F à degrés R, ou toute autre combinaison de ceux-ci.

J'ai pensé que peut-être quelque chose de ce genre:

units.degC = <<somefunc of units.K>>

Mais clairement c'est le mauvais chemin pour aller vers le bas. Des suggestions pour la mise en œuvre proprement "offset"-type des conversions d'unités dans SymPy?

Note: je suis ouvert à d'autres unités de conversion les modules, mais ne sais pas du tout d'ailleurs Unumet l'a trouvé à être lourd.

Edit: OK, il est maintenant clair que ce que je veux faire, c'est d'abord déterminer si les deux quantités à comparer sont dans le même système de coordonnées. (comme les unités de temps de référence à différentes époques ou les fuseaux horaires ou dB à droite de l'amplitude), faire de la transformation appropriée, puis de faire la conversion. Il n'existe aucun général de coordonner les outils de gestion du système? Ce serait formidable.

Je voudrais faire l'hypothèse que l' °F et °C reportez-vous toujours à Δ°F Δ°C à l'intérieur d'une expression, mais se référer à l'absolu quand on est seul. Je me demandais juste si il y avait moyen de faire units.degF une fonction et claque un décorateur property() de traiter ces deux conditions.

Mais pour l'instant, je vais mettre en units.C == units.K et d'essayer de rendre très clair dans la documentation pour utiliser les fonctions convertCtoK(...) et convertFtoR(...) lorsque vous traitez avec des unités absolues. (C'est juste une blague. Non, je ne le ferai pas.)

source d'informationauteur Paul