Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类如何处理未分配的类实例?_Python_Class_Memory Management - Fatal编程技术网

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模块而不是一个类…很棒的好解释,我希望类似的事情是这样的:“很棒的好解释,我希望像这样的情况是这样的: