gpt4 book ai didi

python - __add__ 支持添加不同类型?

转载 作者:行者123 更新时间:2023-11-28 16:56:30 24 4
gpt4 key购买 nike

如果 python 是一种支持重载的静态编程语言,那将很容易解决。我正在制作一个名为 Complex 的类,它是复数的表示(我知道 python 有它自己的,但我想自己制作一个),其中 a 是实数,b 是虚数 (Complex(a, b))。它应该支持将 Complex 实例相加 (Complex(2, 4) + Complex(4, 5) = Complex(6, 9)),以及相加一个整数 (Complex(2) , 3) + 4 = 复杂 (6, 3)).然而,由于 python 的特性...

__add__(self, other):

...我必须选择该类将支持哪个,因为它在编译时无法识别类型,也不支持函数重载。什么是最好的解决方案?我是否必须编写与 other 参数的数据类型相关的 if 语句?

最佳答案

你可以做的是检查实例复杂的东西,如果不是,把它变成一个,像这样:

def __add__(self, other):
if isinstance(other, Complex):
# do addition
else:
return self + Complex(other, 0)

这当然不会消除类型检查,但它会重用您在 __init__ 中所做的一切(这可能是检查输入是 int 还是 float)。

如果此时您不在 init 中进行类型检查,这可能是个好主意,并且 this看起来合理,除了内置的复杂类型。

关于python - __add__ 支持添加不同类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57829402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com