【发布时间】:2019-09-06 23:05:54
【问题描述】:
如果 python 是一种支持重载的静态编程语言,那将很容易解决。我正在创建一个名为 Complex 的类,它表示复数(我知道 python 有它自己的,但我想自己做一个),其中 a 是实数,b 是虚数(Complex(a, b))。它应该支持将复杂实例添加在一起 (Complex(2, 4) + Complex(4, 5) = Complex(6, 9)),以及添加整数 (Complex(2, 3) + 4 = Complex(6, 3))。但是,由于python的性质...
__add__(self, other):
...我必须选择要支持的类,因为它在编译时无法识别类型,也不支持函数重载。什么是最好的解决方案?我是否必须针对 other 参数的数据类型编写 if 语句?
【问题讨论】:
-
如果你想支持添加不同类型的对象,我认为最好的选择是使用single dispatcher,尽管再想一想这可能有点矫枉过正。试试看,看看你喜欢什么:)
标签: python overloading add