Skip to main content
 首页 » 编程设计

python之在访问 python 中的对象时返回默认成员

2025年05月04日11jpfss

我正在编写一个“环境”,其中每个变量都由一个值和一个描述组成:

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" 

但我不喜欢这个解决方案。你有什么建议吗?

请您参考如下方法:

两个一般说明。

  1. 类名请使用大写。

  2. 请(除非使用 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 你的意思?