def show(self)は何を表示する?
class Example:def __init__(self):
self.value = 000 # self.value という属性を定義(インスタンス全体のもの)
def x1(self):
self.value = 123
def x2(self):
self.value = 456
def show(self):
print(self.value)
def show(self)は何を表示する?
このコードの def show(self): が表示するのは、インスタンスの self.value に最後に代入された値です。
つまり、呼び出しの順番によって変わります。
クラスの全体像を確認
class Example:
def __init__(self):
self.value = 000 # 初期値は 0(8進数でなく10進数の0)
def x1(self):
self.value = 123
def x2(self):
self.value = 456
def show(self):
print(self.value) # 現在の self.value を表示
重要な点:
self.value = 000 は 数値 0(Python 3 では先頭の 0 をつけても 8進数にはなりません)
x1() や x2() を呼び出さなければ、value は 0 のまま
x1() または x2() を呼び出した後なら、その値に上書きされます
例:どう表示されるか
@ 初期状態で show() を呼ぶ
e = Example()
e.show()
出力:
0
A x1() を呼んでから show()
e = Example()
e.x1()
e.show()
出力:
B x2() を呼んでから show()
e = Example()
e.x2()
e.show()
出力:
456
C x1() と x2() の両方を呼んだ場合
e = Example()
e.x1()
e.x2()
e.show()
出力:
456
最後に x2() が呼ばれたので、self.value が上書きされています。
結論
def show(self)
は「その時点の self.value の値を表示する」関数です。
呼び出し順で変わるので:
呼んだ関数 show() の表示結果
なし(初期状態) 0
x1() の後 123
x2() の後 456
x1() → x2() 456