python - NoneType 类是否继承对象类?

标签 python python-3.x

在下面的类层次结构中,

enter image description here enter image description here

NoneType是否继承类object

注意:python 3.5

最佳答案

是的,在 Python2 和 Python3 中:

>>> type(None)
<class 'NoneType'>
>>> type(None).mro()
[<class 'NoneType'>, <class 'object'>]
>>> issubclass(type(None), object)
True
>>> isinstance(None, object)
True

请注意,在 Python2 中,只有 不是 object 子类的类是旧式类。但是,此类的实例仍然是 object 的实例:

>>> class Foo:
...     pass
... 
>>> foo = Foo()
>>> foo
<__main__.Foo instance at 0x7f2a33474bd8>
>>> type(foo)
<type 'instance'>
>>> foo.__class__
<class __main__.Foo at 0x7f2a33468668>
>>> Foo.mro()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class Foo has no attribute 'mro'
>>> issubclass(Foo, object)
False
>>> isinstance(foo, object)
True
>>> type(foo).mro()
[<type 'instance'>, <type 'object'>]
>>> issubclass(type(foo), object)
True

编辑:我怀疑 Python < 2.6 和 C 中实现的类型可能有些不同。

关于python - NoneType 类是否继承对象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415550/

相关文章:

python - TypeError 使用 GradientTape.gradient 计算梯度

Python3 : what are faster, 嵌套函数调用或 if 语句(try/excepts 非常快)

python - pandas.DataFrame.round 似乎不适用于我的 DataFrame - 舍入问题导致额外的数据存储在 csv 文件中

python - 如何提高循环性能

python - 为什么当变量被赋予不同的值时,变量的地址在 python 中会发生变化?

python : no module named selenium

python - 如何在 Python 中获取列表并填充值并放入数据框和过滤器中?

python - 使用 python 回顾添加对象属性

python - Pylint 报告误报错误

python - 编译时检查以及主要脚本字节码存储在 Python 中的什么位置?