のは、私は2つのクラスがあるとしましょう:私は、そのオブジェクトへのポインタとして別のオブジェクトにオブジェクトを置くとき、私は、する必要が削除する必要があり、C++でPythonのネストされたオブジェクトのデストラクタ
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
....
をそれはデストラクタで、またはメモリリークです。
質問1:上記の擬似コードでは、self.Bはデストラクタで削除する必要があるポインタの種類ですか?
質問2:変数AClassWithinAClassはどうなりますか?それはデストラクターで削除する必要があるポインタですか、あるいはAnotherClassが削除されたときにPythonがそれを取り除くことを知っていますか?
私はポインタやものについて(Pointers in Python?)グーグルで試してみましたが、Pythonはそのような暗黙の言語なので、私は緊張していると思います。
号は、Pythonにはポインタはありません、そしてメモリはあなたのために管理されています。 –
デストラクタによってあなたが '__del__'を参照しているのであれば**はそれを実装していません**それを乱用するとメモリリークが発生する可能性があるからです。 –