在以下Python代码中:
class Foo:
def bar(self):
return 1
def baz():
return Foo()
print baz().bar()
问题0:
在
bar()
中评估print baz().bar()
时,是什么使Foo
返回的baz()
实例尚未被垃圾回收,因为似乎没有对其的引用,就像在其中:foo = baz()
print foo.bar()
其中
foo
存储Foo
实例的引用。问题1:
如果Foo和baz是在Python扩展模块中用C实现的,
baz
是否应该增加返回对象foo
的引用计数以将其设置为1? 最佳答案
答案0:调用bar()
时,bar是绑定方法(绑定到Foo
实例),该方法保留对其self
参数(即Foo
实例)的引用。
关于python - Python引用计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24579721/