hakeの日記

Windows環境でプログラミングの勉強をしています。

python - クラス

  • コンストラクタは、__init__(self, *args)
  • メソッドの最初の引数はself
  • クラス変数は、クラス名.変数名
  • インスタンス変数は、self.変数名
#coding: cp932

class A:
	def __init__(self, arg):
		self.var = "instance var : " + arg

	def print(self):
		print(A.var)
		print(self.var)

	def set_class_var(self, arg):
		A.var = arg

class B(A): # class Aを継承
	def __init__(self, arg):
		super().__init__(arg)  # class Aの__init__()を実行


a1 = A("a1")
a1.set_class_var("class var init")
a1.print()
# -> class var init
#    instance var : a1

# インスタンス名.変数名でインスタンス変数にアクセス
print(a1.var)  # -> a1

a1.set_class_var("class var is changed by a1")
a1.print()
# -> class var is changed by a1
#    instance var : a1

a2 = A("a2")
a2.print()
# -> class var is changed by a1
#    instance var : a2

b1 = B("b1")
b1.print()
# -> class var is changed by a1
#    instance var : b1

b1.set_class_var("class var is changed by b1")
b1.print()
# -> class var is changed by b1
#    instance var : b1

a1.print()
# -> class var is changed by b1
#    instance var : a1