在以下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/

10-14 16:50
查看更多