初期化メソッドはクラスのインスタンスがつくられると呼び出される。
クラス変数はすべてのインスタンスで共通の変数であること。
クラス変数をクラス内で書く、もしくはクラスの外部からクラス名.変数名 = 値 とすると新たなインスタンスを作った時も、それがインスタンス生成時に反映されるということ。
これを踏まえて、サイトに載っていた次のコードを考えたのですが、
python
1class SampleClass(object): 2 count = 0 3 def __init__(self): 4 SampleClass.count += 3 5 6a1 = SampleClass() 7print(SampleClass.count) 8a2 = SampleClass() 9print(SampleClass.count)
このクラス変数が、インスタンス生成の度に値が保持されて変わるのは、インスタンスを2回生成することでコンストラクタ(初期化メソッド)が1,2度と実行され、クラス変数のため、インスタンスごとに値が変わらず保持されているから。でしょうか?
ただ、疑問があります。コンストラクタ内でクラス変数を変更した場合はインスタンス毎ごとに初期化されないんですかね。。。あくまで初期化するのはコンストラクタ内で定義したself.変数名としたインスタンス変数だけでしょうか?
知りたいこと
- 上のプログラムの考え方は合っているか
- コンストラクタ内で初期化されるのはインスタンス変数だけなのか
ということです。回答よろしくお願いします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。