各変数が値と説明で構成される「環境」を作成しています。
class my_var:
def __init__(self, value, description):
self.value = value
self.description = description
変数が作成され、辞書内に配置されます。
my_dict["foo"] = my_var(0.5, "A foo var")
これはクールですが、変数を使用した操作の 99% は「値」メンバーを使用しています。だから私はこのように書かなければなりません:
print my_dict["foo"].value + 15 # Prints 15.5
また
my_dict["foo"].value = 17
オブジェクト my_dict["foo"] に対するすべての操作がデフォルトで "value" メンバーになるようにしたいと思います。言い換えれば、私は書きたい:
print my_dict["foo"] + 15 # Prints 5.5
などなど。
私が見つけた唯一の方法は、すべてのアンダースコア メンバー (eq、add、str など)を再実装することですが、これはどういうわけか間違った方法のように感じます。私が使える魔法の方法はありますか?
回避策は、次のように辞書を増やすことです。
my_dict_value["foo"] = 0.5
my_dict_description["foo"] = "A foo var"
しかし、私はこの解決策が好きではありません。何か提案はありますか?