Python 中可以存在非对象吗?

Can a non-object exist in Python?

众所周知,Python万物皆对象。我想知道的是是否可以创建一个 "object" x 使得 isinstance(x, object) returns False。我怀疑充分滥用 CPython API 是可能的,尽管使用纯 Python 实现这一点会更有趣。

最初我认为旧式 类 会 return False 因为对象层次结构可能不完全适用,但看起来 isinstance(x, object) 确实是 True 用于旧式实例 类.

虽然这主要是理论上的兴趣,但如果 Python 允许创建与基 object 类型断开连接的新对象层次结构,则可能会很有趣(或危险)。

来自文档,第 3 章(数据模型):"All data in a Python program is represented by objects." 看起来很清楚。你说的是替代 "might be interesting" 但已经有很多有趣的东西不是 Python.

当然你可以通过 C API 做任何事情(特别是通过很棒的 forbiddenfruit 模块)

>>> from forbiddenfruit import curse
>>> class C: pass
... 
>>> curse(type, "__instancecheck__", lambda cls, obj: type(obj) != C)
>>> isinstance(C(), object)
False
>>> isinstance(C(), C)
True