Python中可以存在非对象吗?

2024-04-26 05:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

众所周知,在Python中,一切都是一个对象。我想知道的是是否可以创建一个“object”x,这样isinstance(x, object)返回{}。我怀疑在充分滥用cpythonapi的情况下是有可能的,不过用纯Python实现这一点会更有趣。在

最初我认为旧样式的类将返回False,因为对象层次结构可能无法完全应用,但是对于旧样式类的实例,isinstance(x, object)实际上是{}。在

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


Tags: 对象实例false类型object层次结构情况样式
2条回答

当然,您可以通过C API做任何事情(特别是通过awesomeforbiddenfruit模块)

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

从文档中,第3章(数据模型):“Python程序中的所有数据都是由对象表示的。”似乎足够清楚了。你说替代方案“可能很有趣”,但是已经有很多有趣的东西不是Python的。在

相关问题 更多 >