我有一个函数accuracy(n)
,用于设置浮点数n的精度。是否可以重载float类型的某些操作符,以便:
f = 1.5
x = f
将自动实施(在后台):
x = accuracy(f)
非常感谢
修改是否可以重载__eq__
的{{1}}?
答案 0 :(得分:1)
没有任何超载你可以做到这些确切的行将按照你描述的方式运行,但你可以得到类似的东西:
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
答案 1 :(得分:0)
没有。但是您可以创建一个定义__float__()
的类,以便在浮点上下文中使用对象时使用新值。
答案 2 :(得分:0)
不,但您可以编写一个类并定义__setattr__
方法,以便调用您的函数来预处理分配给成员属性的数据。类似的东西:
def __setattr__(self, name, value):
if isinstance(value, float):
self.__dict__[name] = accuracy(value)
else:
self.__dict__[name] = value