Python でクラス変数を書き換えると生成済みのインスタンス変数にビックリな影響を与えることを知ったので、それについて書き留めておきます。使ったのは Python 3.5 です。
class Sandwich: ham = 0
メンバに変数 ham を持つ Sandwitch クラスを用意しました。このクラスのインスタンスを生成します。
>>> sw = Sandwich() >>> sw.ham # インスタンス変数 0
当然、インスタンス変数は初期化された値が入ります。ではクラス変数を別の値に書き換えるとどうなると思いますか?
>>> Sandwich.ham = 1 # クラス変数に別の値を代入
そうすると…