改变浮动实例的内容?

Alter the content of a float instance?

我想修改 float 实例的值如下:

>>>%paste
class MyFloat(float):
   def foo(self):
      self = self + 1

>>> f = MyFloat(41)
>>> f.foo()
>>> f
41.0

很遗憾self += 1不起作用

我假设内置对象是不可变的,甚至 f.__add(1) 也会 return 一个新的 float 实例。我说得对吗?

我需要一个容器来表示从 USB 设备获取的测量值的锁存值。一旦值被锁定,我就会得到一个带有其他方法的浮点数,例如 Update 方法从设备或 units 获取新的测量值,return 是测量单位。我想在执行 Update 方法时更新实例的内容。如果浮动是不可变的并且没有办法扭转这一点。我可能需要在 GetNewMeasurement 中重命名我的 Update,这将 return 实际对象的新实例。接下来可能会问第二个问题Why do I need an Update method?。测量与几个参数相关联:设备地址、寄存器名称、测量类型、获取测量时设备的配置……要在完全相同的条件下获得新的测量,我需要知道所有这些参数。

Standard type hierarchy 上 Python 的参考手册上,我读到 numbers.Number 是不可变的。我不知道它是否也适用于花车以及 numbers.Real 是否与 float 相同。也许可以有一个不是不可变的 float 的派生版本。

浮点数是不可变的,你是对的。

dir(float)
>>>[, 'real']

您可以将该属性用于 return 一个新的、递增的引用。