改变float实例的内容?

2021-06-13 13:40:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想修改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方法时更新实例的内容。如果浮点数是不可变的,并且没有办法逆转这种情况。我可能需要在GetNewMeasurement中重命名我的Update,这将返回实际对象的新实例。接下来可能会问第二个问题Why do I need an Update method?。测量与几个参数有关:设备地址、寄存器名称、测量类型、获取测量时设备的配置。。。为了在完全相同的条件下得到一个新的测量值,我需要知道所有这些参数。你知道吗

Standard type hierarchy上的Python参考手册中,我看到numbers.Number是不可变的。我不知道它是否也适用于float,也不知道numbers.Real是否与float相同。可能有一个派生版本的float不是不变的。你知道吗