众所周知,一切都是Python中的一个对象。我想知道的是,是否可以创建一个"对象" x
,isinstance(x, object)
返回False
。我怀疑它有可能充分滥用CPython API,尽管用纯Python实现这一点会更有趣。
最初我认为旧式类会返回False
,因为对象层次结构可能不完全适用,但对于旧式类的实例,似乎isinstance(x, object)
确实是True
虽然这主要是理论上的兴趣,但如果Python允许创建与基础object
类型断开的新对象层次结构,则可能会感兴趣(或危险)。
答案 0 :(得分:1)
从文档,第3章(数据模型):" Python程序中的所有数据都由对象表示。"看起来很清楚。你说替代品"可能很有趣"但是已经有许多有趣的东西不是Python。
答案 1 :(得分:1)
当然,您可以通过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