Snu*_*fer 5 python overloading add
如果 python 是一种支持重载的静态编程语言,将很容易解决。我正在制作一个名为 Complex 的类,它是复数的表示(我知道 python 有它自己的,但我想自己制作一个),其中 a 是实数, b 是虚数 ( Complex(a, b))。它应该支持将 Complex 实例添加到一起 ( Complex(2, 4) + Complex(4, 5) = Complex(6, 9)),以及添加一个整数 ( Complex(2, 3) + 4 = Complex(6, 3))。但是,由于python的性质...
__add__(self, other):
Run Code Online (Sandbox Code Playgroud)
...我必须选择该类将支持哪个,因为它不会在编译时识别类型,也不支持函数的重载。最好的解决方案是什么?我是否必须编写与other参数数据类型相关的 if 语句?
你可以做的是检查实例是否为 Complex,如果不是,则将其变成一个,如下所示:
def __add__(self, other):
if isinstance(other, Complex):
# do addition
else:
return self + Complex(other, 0)
Run Code Online (Sandbox Code Playgroud)
当然,这并不能消除类型检查,但它会重用您正在执行的任何操作__init__(这可能是检查输入是 int 还是 float)。
如果目前您不在 init 中进行类型检查,这可能是一个好主意,而且这看起来很合理,但内置的复杂类型除外。
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |