Python类如何处理未分配的类实例?
有人知道这样的代码是如何处理的吗Python类如何处理未分配的类实例?,python,class,memory-management,Python,Class,Memory Management,有人知道这样的代码是如何处理的吗 myclass().mymethod() 通常情况下,您会将类分配给一个变量,并在不需要时销毁它。在本例中,python是在之后运行代码并释放内存,还是在程序结束之前一直挂起 上面的内容更简洁,当您不再需要变量时,为什么要将其赋值? 我想在我将上述代码应用于我的所有项目之前,我会找到答案。:) 提供的myclass().mymethod()不会创建对myclass()的附加引用(通过该方法的self参数),一旦mymethod()返回myclass()将再次从
myclass().mymethod()
通常情况下,您会将类分配给一个变量,并在不需要时销毁它。在本例中,python是在之后运行代码并释放内存,还是在程序结束之前一直挂起
上面的内容更简洁,当您不再需要变量时,为什么要将其赋值?
我想在我将上述代码应用于我的所有项目之前,我会找到答案。:) 提供的myclass().mymethod()
不会创建对myclass()
的附加引用(通过该方法的self
参数),一旦mymethod()
返回myclass()
将再次从内存中删除
CPython使用引用计数来跟踪哪些对象留在周围。当您创建myclass()
时,堆栈保存对它的一个引用。然后,解释器查找mymethod
属性,该属性作为一个方法创建了对存储在method对象上的myclass()
对象的另一个引用。堆栈保留方法对象,使方法对象在下一步保持活动状态。然后调用该方法,将对象作为self
传递给函数;这是第三个参考资料
如果该方法没有将self
添加到任何其他结构中(例如,将self
或self
上的另一个方法添加到全局列表中),则当该方法返回时,将清除self
本地名称,并且引用计数降至2。不再需要该方法本身,它将从堆栈中删除(这会破坏该方法对象,因为它现在有0个引用),并且myclass()
的引用计数将下降到1。myclass()
对象也不再使用,因此计数下降到0,实例从内存中删除。提供了myclass()。mymethod()
不会创建对myclass()
的额外引用(通过方法的self
参数),只要mymethod()
返回myclass()
将再次从内存中删除
CPython使用引用计数来跟踪哪些对象留在周围。当您创建myclass()
时,堆栈保存对它的一个引用。然后,解释器查找mymethod
属性,该属性作为一个方法创建了对存储在method对象上的myclass()
对象的另一个引用。堆栈保留方法对象,使方法对象在下一步保持活动状态。然后调用该方法,将对象作为self
传递给函数;这是第三个参考资料
如果该方法没有将
self
添加到任何其他结构中(例如,将self
或self
上的另一个方法添加到全局列表中),则当该方法返回时,将清除self
本地名称,并且引用计数降至2。不再需要该方法本身,它将从堆栈中删除(这会破坏该方法对象,因为它现在有0个引用),并且myclass()
的引用计数将下降到1。myclass()
对象也不再使用,因此计数下降到0,实例将从内存中删除。如果在代码中执行此操作。。。考虑把它变成一个正则函数,和/或使MyCar模块而不是一个类…如果你在你的代码中这么做…考虑把它变成一个正则函数,和/或使MyCar模块而不是一个类…很棒的好解释,我希望类似的事情是这样的:“很棒的好解释,我希望像这样的情况是这样的: