0

我有一个函数accuracy(n)可以设置浮点数 n 的精度。是否可以重载某种浮点类型的运算符,以便:

f = 1.5
x = f

将自动(在后台)实现为:

x = accuracy(f)

非常感谢

编辑__eq__是否有可能超载float

4

3 回答 3

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
于 2013-08-13T21:32:45.417 回答
0

不可以。但是您可以创建一个定义的类,__float__()以便在浮点上下文中使用对象时使用新值。

于 2013-08-13T21:32:20.470 回答
0

不,但是您可以编写一个类并定义一个__setattr__方法,以便调用您的函数来预处理分配给成员属性的数据。就像是:

def __setattr__(self, name, value):
   if isinstance(value, float):
      self.__dict__[name] = accuracy(value)
   else:
      self.__dict__[name] = value
于 2013-08-13T21:34:21.577 回答