Python 为什么 issubclass(int, float) return False

Python why does issubclass(int, float) return False

在Python中,为什么issubclass(int, float)isinstance(1, float)returnFalse

我一直以为intfloat的子类。

In [1]: issubclass(int, float)
Out[1]: False

In [2]: isinstance(1, float)
Out[2]: False

研究

https://github.com/Stewori/pytypes/issues/26

提到 [The numeric tower][1] 来自 PEP 484,但我认为那是为了类型提示。

因为int不是float的子类:

>>> import inspect
>>> inspect.getmro(int)
(<class 'int'>, <class 'object'>)
>>> inspect.getmro(float)
(<class 'float'>, <class 'object'>)