有没有办法获得Python中的对象的当前裁判计数?

有没有办法获得Python中的对象的当前裁判计数?

根据一些Python 2.0参考( http://www.brunningonline.net/simon/python/quick-ref2_0.html),sys模块包含一个函数:;

import sys sys.getrefcount(object) #-- Returns the reference count of the object. 

由于对象arg临时引用,一般比您预期的要高1。

使用gc模块,可以调用gc.get_referrers(foo)获取引用foo的所有内容。

因此, len(gc.get_referrers(foo))会给你这个列表的长度:引用者的数量,这就是你所追求的。

另请参阅gc模块文档 。

有'gc.get_referrers()'和'sys.getrefcount()。 但是,很难看出sys.getrefcount(X)如何能够达到传统引用计数的目的。 考虑:

 import sys def function(X): sub_function(X) def sub_function(X): sub_sub_function(X) def sub_sub_function(X): print sys.getrefcount(X) 

然后function(SomeObject)传递'7', sub_function(SomeObject)传递'5', sub_sub_function(SomeObject)传递'3',而sys.getrefcount(SomeObject)传递'2'。

换句话说:如果使用'sys.getrefcount()',你必须知道函数的调用深度。 对于'gc.get_referrers()'可能需要筛选引用列表。 我会build议为“变更隔离”这样的目的进行手工引用计数 ,即“如果在其他地方引用了克隆”。