Python中是否存在非对象?

时间:2015-05-20 05:23:58

标签: python object base-class

众所周知,一切都是Python中的一个对象。我想知道的是,是否可以创建一个"对象" xisinstance(x, object)返回False。我怀疑它有可能充分滥用CPython API,尽管用纯Python实现这一点会更有趣。

最初我认为旧式类会返回False,因为对象层次结构可能不完全适用,但对于旧式类的实例,似乎isinstance(x, object)确实是True

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

2 个答案:

答案 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