3

私はいくつかの PyQt4 のチュートリアルを見てきましたが、それは良いことですが、オブジェクトを作成するときの構文がそのようなものである理由がよくわかりません:

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        #code to set up instance variables and show() the window

このようにして、呼び出しを完全に排除し、呼び出しの後にself.initUI()属性を設定するコードを配置するだけでなく、正確には何が得られるでしょうか?__init__()super

4

3 に答える 3

14

読みやすくするために、コードが関数に分割されることがあります。

オブジェクトの初期化に 3 つのステップが必要な場合、論理的には 3 つの関数に分割するのが理にかなっています。これらの関数の名前は、それらが処理する初期化の部分を説明できます。

true から呼び出された "init" 関数が表示されるもう 1 つの理由__init__は、その関数がオブジェクトを新しい状態に復元する場合です。その場合、__init__オブジェクト プールなどの外部から「クリーン」関数を呼び出すことができます。

また、あなた自身の質問で再利用の3番目の理由を示唆しました:サブクラスが初期化の部分が発生する順序を変更する必要がある場合(または一部の部分を完全に省略/置換する必要がある場合)、これはモノリシックでは不可能です__init__が、パーツごとに分ければ簡単。

4 つ目の最後の理由は、プロファイリングです。関数のエントリ/存在とタイミングを追跡する場合、別の関数を使用すると、タイミング メトリックの粒度が細かくなります。

とにかく、どのようにコーディングするかはあなた次第ですが、ここで質問するアプローチにメリットがあります。

于 2013-01-14T04:56:35.480 に答える
0

おそらく、initUI を再度呼び出すことができるようにするためです。

于 2013-01-14T04:57:23.690 に答える
0

私が知っている唯一の理由は、ほとんどの言語と同じ、使いやすさです。オブジェクト指向プログラミングの核心は、クラス、メソッド、変数などを再利用できることです。さまざまなメソッド/関数を分離することで、後で呼び出すことができます。後で彼らに電話するかどうか...それは議論の余地があります. それは良いプログラミングの実践に帰着すると思います。

于 2013-01-14T04:59:11.610 に答える