自定义类到float的类型转换



我有一个类customInt,它看起来像这样:

class customInt:
def __init__(self, value):
self.value=int(value)
def __add__(self, other):
return foo(self.value+other.value)
# do some other stuff
obj=foo(1.23)

是否可以创建一个operator/attribute/property/…将对象obj转换为浮点数,以便可以将类转换为float(obj)?

这样做的目的是创建一个普通int的临时替代品,但没有在除法等中自动转换为浮点数。不如此,想要的是:

  • 类似obj.to_float()的方法。那么它就不再是一个插入式替代品了。
  • 从可浇注类型继承:在这种情况下,我必须重载每个操作符。这并不理想。

你可以在你的类中定义一个def __float__(self):函数,当你使用float(obj)时它将被调用。您也可以添加__int__,__str____complex__以同样的方式。