質問: self.x + 1 print(self.x) ```
回答: 「初期化メソッドでの処理か否か」のことを質問していますが、「クラス変数」と「インスタンス変数」の違いと混合されているようです。 そしてどうも、質問のようなプログラムは作成出来て動作してしまうけれども、実は非推奨らしいですね。 この辺の記事が参考になるでしょう。 Pythonのクラスにおけるインスタンス変数とクラス変数の挙動の覚書 クラス変数にはどうアクセスすべき? Pythonのクラス変数とインスタンス変数 上記記事から以下が導き出されるでしょう。 * クラス変数はインスタンスを作成しなくても存在してアクセス出来る + class定義だけした状態で`print(test1.x)`が出来る * 同じ名前のクラス変数とインスタンス変数を作ると、それぞれ独立した別のものが存在する + `t1 = test1()`とした時に`t1.x`と`test1.x`は別々のものである + 質問のソースで上記はインスタンス作成時には同じ値を返すが、`t1.func1()`実行後は`t1.x`は`6`になり、`test1.x`は`5`のまま * インスタンスを作成しても、クラス変数が無ければクラス変数としてのアクセスは出来ない + `t2 = test2()`とした時でも、`print(t2.x)`は出来るが`print(test2.x)`は出来ない