gpt4 book ai didi

python - 如果我将类的第二个实例归因于包含现有实例的相同变量,会发生什么情况?

转载 作者:太空狗 更新时间:2023-10-30 01:40:47 28 4
gpt4 key购买 nike

除了举例之外,我不确定如何提出问题。

假设我有一个类:

class Foo():
pass

然后我创建了它的一个实例:

foo = Foo()
...

然后,作为我程序的一部分,我用相同的名称重新创建相同的实例(以重新开始游戏,但在另一个名为 Bar 的单独类中保持总分)。

foo = Foo()
...

(我不知道正确的术语)我还没有写任何代码来消除第一个实例。第一例是被删除还是被覆盖?它似乎适用于一个小程序。如果我这样做很多次,我会遇到麻烦吗?

最佳答案

让我试着用图形来解释它。

当你这样做的时候

foo = Foo()

第一次,您在内存中创建类型为 Foo对象(使用 Foo()),同时时间,创建一个指向此对象的变量:

enter image description here

当你执行

foo = Foo()

第二次,您正在创建另一个对象。同时,您使用相同的变量 并将其指向新对象。当然,变量不会再指向之前的对象了:

enter image description here

现在,第一个对象发生了什么?好吧,如果您的程序中没有其他变量指向它,它就没有用了,因为您无法再访问它了!在这种情况下,当解释器运行垃圾收集器 时,对象将被销毁/从内存中释放。垃圾收集器是一种算法,它会查找每个不可访问的对象并将其删除。垃圾收集器不会每次都运行,因此销毁对象可能需要一段时间。

因此,在您的场景中,发生的情况是:

  • 对第一个对象的引用 被覆盖,但该对象将存在。如果另一个变量指向它,它不会被销毁。
  • 但是,如果没有其他变量指向它,则该对象将在未来的某个时刻被消除。

关于python - 如果我将类的第二个实例归因于包含现有实例的相同变量,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12045539/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com