为什么Python浮点数具有real和imag属性?

时间:2019-05-29 09:11:33

标签: python

至少在Python 3中,float具有属性realimag以及方法conjugate()。由于issubclass(float, complex)的评估结果为False,为什么是这些原因?

1 个答案:

答案 0 :(得分:5)

很明显,这是一种设计选择,它很好地扎根于Python数字类型(即boolintfloatcomplex),从源代码(例如float的源代码)。

这已在PEP 3141中进行了讨论,从而产生了numbers module for Numeric abstract base classes模块。 如您所见,.real.imag.conjugate()是通用Number抽象的一部分。

从实际的角度来看,这意味着可以安全地为complex编写任何数字算法,并且可以优雅地适用于任何Number子类型。