我们说我有两节课:
import matplotlib.pyplot as plt
class AClass:
def __init__(self):
self.A = SomeStuff()
self.B = plt.figure(1)
def SomeOtherThings(self):
MaybeIPlotSomeThingsToThatPlotEtc
....
class AnotherClass:
def __init__(self):
self.AClassWithinAClass = AClass()
self.B = plt.figure(2)
def SomeOtherThings(self):
MaybeIPlotSomeThingsToThatPlotEtc
....
在C ++中,当我将一个对象作为该对象的POINTER放入另一个对象时,我必须在析构函数中删除它,否则就是内存泄漏。
问题1:在上面的伪代码中,是self.B我需要在析构函数中删除哪种指针?
问题2:变量AClassWithinAClass怎么样?这是一个我需要在析构函数中删除的指针,还是python知道在AnotherClass被删除时摆脱它?
我已经尝试使用谷歌搜索指针和内容(Pointers in Python?),但我想我很紧张,因为python是一种隐含的语言。
答案 0 :(得分:0)
在这两种情况下,您都不需要显式调用析构函数方法。 Python使用垃圾收集来管理内存。为了保持这一点,它使用引用计数。 Python将记录引用特定对象的变量数量。但是,如果Python有一个未被任何东西引用的变量,它将释放内存。我当然不是Python内部内存管理方面的专家,但这是我的理解。