Python - クラス - クラス変数(static変数)

公開日:2019-03-04

1. 概要

クラス変数(static変数)の使い方です。
クラス変数は、クラス自体に保持される変数です。
それに対してインスタンス変数は、インスタンス毎に保持され、それぞれ異なる変数として扱われます。

クラス変数は、変数名の前にクラス名を付けて使用します。
クラスメソッド内であれば、第1引数の変数(cls)を付けても使用できます。

@classmethod の有無によってインスタンス変数として扱われたり、
何も付けないとローカル変数として扱われるため要注意です。

2.1 サンプル

クラス変数は、インスタンスを生成せずに使用できます。

ソース
class Car:
    note = "車"

print(Car.note)
Car.note = "カー"
print(Car.note)

実行結果
車
カー

2.2 サンプル

クラスメソッドでは、第1引数の cls を使ってクラス変数を使用できます。

ソース
class Car:
    
    note = "車"
    
    @classmethod
    def get_note(cls):
        return cls.note
    
    @classmethod
    def set_note(cls, value):
        cls.note = value
    
    def set_note2(self, value):
        Car.note = value


print(Car.note)
print(Car.get_note())

Car.set_note("カー")
print(Car.note)
print(Car.get_note())

car = Car()
car.set_note("かぁ")
print(Car.note)

実行結果
車
車
カー
カー
かぁ