0

みんな、私はPythonにかなり慣れていないので、GUIアプリケーションを構築することを学んでいます(wypythonを使用)。Python でのオブジェクトの破壊に関する質問があります。たとえば、myFrame には onNew (新しいドキュメントを作成) と onOpen (ファイルを開く) メソッドがあります。

簡単に言うとこんな感じ。

def onNew
    self.data=DataModel()
    self.viewwindow=ViewWindow(self.data)


def onOpen
    dlg = wx.FileDialog(self, "Open file", os.getcwd(), "", "*.*", wx.OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            self.data=DataModel.from_file(...)
            self.view=View(self.data)

ここで、「ユーザーが以前にどちらかをクリックした後、もう一度開くまたは新規をクリックした場合」を検討したいと思います。

そのため、ウィンドウ クラスについては、 を呼び出しself.viewwindow.Destroy()てウィンドウを破棄できます。データモデルオブジェクトはどうですか? 最初に new:self.data=DataModel()を呼び出し、次に open を呼び出して re-assign するとself.data=DataModel.from_file(...)、古いインスタンスはどうなるでしょうか? 自分で破壊する必要がありますか、それとも python がこの破壊を管理しますか?

4

1 に答える 1

2

Python にはガベージ コレクションがあります。ぶら下がっている古いオブジェクトへの参照がない限り、それは収集されます。

あなたが言うとすぐにself.data = somethingElse、古いself.dataものへの参照はありません(別のオブジェクトがあなたのオブジェクトへの参照を持っていない限りself.data)。

于 2010-10-07T08:29:22.453 に答える