我有一个类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__
以同样的方式。