可以使用装饰器来实现不同类型的返回值。首先,定义一个装饰器,该装饰器有一个参数来确定返回的类型。然后,在类中使用该装饰器来装饰__add__方法,并根据不同的参数返回不同的数据类型。下面是示例代码:
def return_type(return_type):
def decorator(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
if return_type == "int":
return int(result)
elif return_type == "float":
return float(result)
else:
return result
return wrapper
return decorator
class MyNumber:
def __init__(self, value):
self.value = value
@return_type("int")
def __add__(self, other):
return self.value + other.value
num1 = MyNumber(10)
num2 = MyNumber(20)
result = num1 + num2
print(type(result))
print(result)
在上面的代码中,我们定义了一个装饰器return_type,它接受一个参数return_type,该参数指定要返回的数据类型。然后我们将__add__方法使用该装饰器进行装饰,使用装饰器返回的结果进行类型转换。
在此示例中,我们使用了int类型的return_type装饰器,因此返回的结果是int类型。您可以根据需要更改return_type参数来返回不同的数据类型。