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

公開日:2019-03-04 更新日:2019-05-14
[Python]

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)
車
車
カー
カー
かぁ