我正在编写一个“环境”,其中每个变量都由一个值和一个描述组成:
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"
但我不喜欢这个解决方案。你有什么建议吗?