ガラス体積計と不確かさの取り扱い
現状と対策
JIS R 3505に対応したJSONはメスフラスコ、ホールピペット、メスピペット、ビュレット、メスシリンダー、乳脂計と一通り対応しました。さて、ここでこのライブラリの本質について見つめなおします。ガラス体積計というのは正確な体積を量り取る器具です。その器具が使用された後はX±.00Ymlという性質は残りますがガラス体積計そのものは残りません。
ということは私がやるべきことは
- JISを反映したJSON
- 不確かさ付き値を返すクラス
の二つに絞られます。0節は既に実行済みです。1節への対処方法はquantitiesというライブラリが既に存在します。またC#でもUnit.Netという似たようなライブラリが存在しています。きっと同じ方法が通じるでしょう。
import quantities as pq
class AGlassware(BaseClass):
@property
def value(self) -> pq.UncertainQuantity:
return pq.uncertainquantity(params)
@abstractmethod
def __func__(self, other) -> pq.UncertainQuantity:
return self.value().__func__(other)
というコードを書けばいいことになります。
此処でやっていることはガラス器具の性質を反映した不確かさ付き値を返すメソッドの定義
Pythonの +.-.*./へと不確かさ付き値を返すメソッドの定義の二つです。
このライブラリの本質はquantitiesというライブラリにずいぶんとお任せしていることになります。これを移譲 Delegate といいます。
もうひとつしておくことがあります。Pythonには整数割り算(//)と割り算の二つがあります。そこで整数割り算をSyntaxErrorで機能停止させておきます。
def __floordiv__(self, other) -> None:
raise SyntaxError('Volumetric Glassware library is to discuss uncertainty. No Turn for floor division.')
要約
このライブラリの真髄はガラス器具の不確かさ付き値を返すことです。
ですので計算メソッドを呼び出した場合には不確かさ付き値を返して消滅します。
さて次回は、JSONデータをメソッドで返すクラスを実装しましょう。
これを実装すればPython上におけるガラス器具もずいぶん使いやすくなるはずです。
以上です。
失敗
データと処理を分離することを考えてJSONとPython混合ライブラリにしましたがQuantitiesやMendeleevなどの参考にすべきライブラリは全てをPythonに仕舞っています。これは間違えたかもしれません。