2013-06-02 12 views
5

はたとえば、次のコードで:開始されないと、クラスが「呼び出される」のはなぜですか? - Pythonの

class test: 
    print "Hi" 

Pythonは自動的に 'HI' 印刷します。これは明白な質問ですが、「テスト」オブジェクトが開始されない限り、なぜPythonがそれを行うのかを知ることはできません。 *私は数ヶ月前に一般的にプログラミングを始めました。そしてPythonは私の最初の言語です。

答えて

7

クラスを作成しています。クラスの本体は定義を構築する関数として実行されます。その「関数」のローカル名前空間は、そのクラスを構成する属性のセットを形成します。詳しくは、class statementのマニュアルを参照してください。

メソッドクラス本体は実行されません。関数定義のように、最初に呼び出す必要があります。しかし、クラスの本体を最初に呼び出さなかった場合、クラスがどのようなメソッドを持っているかはわかりません。

同じように、モジュールをインポートすると、モジュールのトップレベルコードが実行され、モジュールの名前空間が形成されます。 print "Hi"をモジュールに入れると、すぐに実行されます。

+0

クラスの本体が関数として実行されているとは思いません。私はそれが遭遇したとき(またはその終了直後に)実行されると信じています。また、後でクラスを呼び出すときに定義した後、実際には '__init __()'関数を呼び出すことになります(それが独自クラスを定義していない場合は、その基本クラスです)。 – martineau

関連する問題