我一直在寻找的源代码给hasattr内置功能,发现一对夫妇引起了我的兴趣线:为什么Python在False和True上保持引用计数?
Py_INCREF(Py_False);
return Py_False;
...
Py_INCREF(Py_True);
return Py_True;
是不是Py_False
和Py_True
全局值?出于纯粹的好奇心,为什么Python会为这些变量保留引用计数?
我一直在寻找的源代码给hasattr内置功能,发现一对夫妇引起了我的兴趣线:为什么Python在False和True上保持引用计数?
Py_INCREF(Py_False);
return Py_False;
...
Py_INCREF(Py_True);
return Py_True;
是不是Py_False
和Py_True
全局值?出于纯粹的好奇心,为什么Python会为这些变量保留引用计数?
这是使所有的对象处理均匀。如果我正在编写处理函数返回值的C代码,那么我必须增加和减少该对象的引用计数。如果函数返回True,我不想检查它是否是那些特殊对象之一,以知道是否操纵其引用计数。我可以完全对待所有对象。
通过处理True和False(和None,btw)与所有其他对象相同,C代码在整个过程中更加简单。
另外:T F和None实际上是物体。他们只是没有任何方法。 http://docs.python.org/c-api/bool.html – Pod 2009-09-22 14:48:52
他们技术上有方法。每个对象都有方法。 – ironfroggy 2009-09-22 15:07:56
len(dir(True))是54 - 方块*全*方法。它们都是特殊的(双下划线命名的)。 – 2009-09-22 15:22:12
-1:这是如何解决你现在有的任何编程问题? – 2009-09-22 14:42:31
@ S.Lott因为当遇到问题时,必须涉及特定的具体编程问题。 – Triptych 2009-09-22 14:44:39
我目前有问题,我不明白需要增加Py_True和Py_False上的引用计数。 – 2009-09-22 14:44:50