数理コンサルタントの備忘録

あなたの悩みを数理で解決する

pythonクラスの備忘録

pythonクラスにおいて、クラス変数とインスタンス変数の違いについて説明する。
まず、以下のようなクラスを定義する。

class ClassVal:
    x = "ClassVal"

class InstanceVal:
    def __init__(self):
        self.x = "InstanceVal"

cls_Val = ClassVal()
ins_Val = InstanceVal()

この時、インスタンス化されたcls_Valのクラス変数、ins_Valのインスタンス変数はいずれも表示できる

print(cls_Val.x) # ClassVal
print(ins_Val.x) # InstanceVal

一方、ClassValのクラス変数は表示できるが、InstanceValのインスタンス変数は表示出来ない

print(ClassVal.x) # class変数に設定されているので、表示できる
print(InstanceVal.x) # instance化しないと表示できないため、エラーとなる