我有一个函数accuracy(n)
可以设置浮点数 n 的精度。是否可以重载某种浮点类型的运算符,以便:
f = 1.5
x = f
将自动(在后台)实现为:
x = accuracy(f)
非常感谢
编辑__eq__
是否有可能超载float
?
我有一个函数accuracy(n)
可以设置浮点数 n 的精度。是否可以重载某种浮点类型的运算符,以便:
f = 1.5
x = f
将自动(在后台)实现为:
x = accuracy(f)
非常感谢
编辑__eq__
是否有可能超载float
?
您无法进行任何重载,以使这些确切的行按照您描述的方式运行,但您可以获得类似的东西:
class Foo(object):
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = accuracy(value)
foo = Foo()
f = 1.5
foo.x = f # set foo._x to accuracy(f)
print(foo.x) # prints foo._x
不可以。但是您可以创建一个定义的类,__float__()
以便在浮点上下文中使用对象时使用新值。
不,但是您可以编写一个类并定义一个__setattr__
方法,以便调用您的函数来预处理分配给成员属性的数据。就像是:
def __setattr__(self, name, value):
if isinstance(value, float):
self.__dict__[name] = accuracy(value)
else:
self.__dict__[name] = value