
使う前に(属性)値を初期化する
これまでの
self
の説明では重要な問題を避けていました。属性にどのように初期値を設定
するかという問題です。現状では、
increase
メソッドのコード(
self
を使う正しいコード)
を実行すると失敗します。この失敗が発生するのは、
Python
では値を代入していない変数はど
こであろうと使うことができないからです。
この問題の重大さを示すために、下の
>>>
プロンプトでの短いセッションを考えます。どちら
かの変数が未定義だと、実行は失敗してしまいます。
>>> val += incr
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
val += incr
NameError: name 'val' is not defined
>>> val = 0
>>> val += incr
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
val += incr
NameError: name 'incr' is not defined
>>> incr = 1
>>> val += incr
>>> val
1
>>> incr
1
>>>
Python
では変数をどこで使うにしても、初期値で初期化しておきます。問題は、「クラスから新
たに生成したオブジェクトでこの初期化をどうやって行うか」 ...