Java での以前の経験から、2 つの GUI クラス オブジェクトに互いのメンバ変数参照が含まれている場合、両方のオブジェクトが破棄されるまでメモリ リークが発生する可能性があることを認識しています。
その状況はデバッグが非常に面倒だったので、現在 Python でメモリ リークを回避するための厳密なガイドラインを使用したいと考えています。
私は現在、メイン ウィンドウ (parent_window) と、ユーザーの補助オプションを含む多くのサブ ウィンドウ (子ウィンドウ) がある GUI システムを持っています。
メモリリークを防ぐ簡単な方法は、すべての子ウィンドウで親ウィンドウのクラスメンバー変数を保持しないことだと思いました。
class child_window(object):
def make_child_window(self, parent_window):
def on_ok(): parent_window.show()
QtCore.QObject.connect(self.okbutton, QtCore.SIGNAL("clicked()"), on_ok)
ご覧のとおり、クラス メソッド ("make_child_window") のローカル スコープにのみ含まれるparent_window を呼び出すネストされた関数があります。これは不正行為ですか?下位レベルでは、python は基本的に「parent_window」をクラス変数として保存しますか? child_window をメモリ内のparent_window に保持することから分離するための他の推奨事項は何ですか?