至少在Python 3中,float
具有属性real
和imag
以及方法conjugate()
。由于issubclass(float, complex)
的评估结果为False
,为什么是这些原因?
答案 0 :(得分:5)
很明显,这是一种设计选择,它很好地扎根于Python数字类型(即bool
,int
,float
,complex
),从源代码(例如float
的源代码)。
这已在PEP 3141中进行了讨论,从而产生了numbers
module for Numeric abstract base classes模块。
如您所见,.real
,.imag
和.conjugate()
是通用Number
抽象的一部分。
从实际的角度来看,这意味着可以安全地为complex
编写任何数字算法,并且可以优雅地适用于任何Number
子类型。