class クラス名:
変数を定義
でクラス内で変数定義できる。
これはコンストラクタ(__init__)や関数(メソッド)に属していない。
class aClass():
san = 'さん!'
def __init__(self,name):
self.name = name + aClass.san
ob01 = aClass('Bob')
print(ob01.name)
aCalssというクラスを以下に定義
変数sanに「さん!」を入れる
コンストラクタを定義(引数はname)
変数nameにname(引数name) + aClass.sanを入れる
ob1にクラスaClassのインスタンスを引数「Bob」作成
ob1のnameを出せ
Bobさん!
クラス定義の中で
コンストラクタ(プロパティ)とメソッド(関数)定義以外の部分で定義した変数は
同じ部分ではそのまま使える。たとえば
san = san + 'HELLO'
のように使う。
これらをコンストラクタやメソッド内で使う場合は
クラス名.変数名
で使う。
self.変数名
ではないので注意。
ここは間違えやすいので注意
コンストラクタや関数以外で書かれる変数の計算は
コンストラクタや関数より先に実行される
class aClass():
san = 'さん!'
def __init__(self,name):
self.name = name + aClass.san
san = san + '今日はいい天気ですね!'
ob01 = aClass('Bob')
print(ob01.name)
とすると出力は
Bobさん!今日はいい天気ですね!
となる。
しかしこの順番だとわかりにくいので
クラス内のコンストラクタでも関数内でもない変数や計算は
真っ先に書いた方が順番的にわかりやすい。