改变浮动实例的内容?

时间:2015-12-13 12:29:22

标签: python floating-point built-in

我想修改一个float实例的值,如下所示:

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

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

不幸的是self += 1不起作用

我假设内置对象是不可变的,甚至f.__add(1)将返回一个新的float实例。我是对的吗?

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

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

1 个答案:

答案 0 :(得分:-1)

浮动是不可改变的,你是对的。

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

您可以使用该属性返回一个新的递增参考。