我想修改一个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
的派生版本不是不可变的。
答案 0 :(得分:-1)
浮动是不可改变的,你是对的。
dir(float)
>>>[, 'real']
您可以使用该属性返回一个新的递增参考。