我正在编写一个“环境”,其中每个变量都由一个值和一个描述组成:
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"
但我不喜欢这个解决方案。你有什么建议吗?
请您参考如下方法:
两个一般说明。
类名请使用大写。
请(除非使用 Python 3.0)子类对象。
class My_Var(object):,例如。
现在回答你的问题。
假设你有
x= My_Var(0.5, "A foo var")
python如何区分x、复合对象和x的值(x.value)?
你想要以下行为吗?
有时
x表示整个复合对象。有时
x表示x.value。
如何区分这两者?你将如何告诉 Python 你的意思?
