Python嵌套对象析构函数(vs C ++)

时间:2017-09-21 00:11:50

标签: python pointers destructor

我们说我有两节课:

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是一种隐含的语言。

1 个答案:

答案 0 :(得分:0)

在这两种情况下,您都不需要显式调用析构函数方法。 Python使用垃圾收集来管理内存。为了保持这一点,它使用引用计数。 Python将记录引用特定对象的变量数量。但是,如果Python有一个未被任何东西引用的变量,它将释放内存。我当然不是Python内部内存管理方面的专家,但这是我的理解。

Previous StackOverflow Post