我希望看到类PopupWindowAction
的定义。当我尝试使用功能list_iterator
显示其定义时,出现错误。我必须导入一个模块才能访问其帮助吗?
更确切地说,我想知道如何获得对迭代器迭代的对象的引用。例如:
help
我非常确定对象l = [1,2,3,4,5]
it = iter(l)
print(type(it)) # this prints: list_iterator
# how to get a reference to l using it
引用了对象it
。这个例子证明了这一点:
l
因此,第三个引用肯定来自import sys
l = [1,2,3,4]
print(sys.getrefcount(l)) # prints 2
it = iter(l)
print(sys.getrefcount(l)) # prints 3
答案 0 :(得分:4)
垃圾收集的get_referents
为您这样做吗?
import gc
l = [1,2,3,4,5]
it = iter(l)
refs = gc.get_referents(it) # looks like: [[1, 2, 3, 4, 5]]
assert l in refs # True
assert l == refs[0] # True
编辑:应该注意的是,l
耗尽后,对it
的引用会消失,而将StopIteration
抬高。因此,当您完成对it
的迭代时,上述引用检查将失败。根据您的用例,这可能是功能,也可能是错误,但是您应该意识到这一点。
# Exhaust the iterator
for x in it:
pass
refs = gc.get_referents(it)
assert l not in refs # No more reference to l
assert not refs # No more reference to anything actually