クラスコーディングでのクラスとインスタンスの差
うーん、クラスとインスタンスの差がJavaと異なるのでちょっと困惑するかも。
クラス変数とインスタンス変数の違いの実例はこんな感じ
class SharedData: spam = 42 x = SharedData() y = SharedData() print x.spam, y.spam, SharedData.spam #インスタンス変数に値を入れるのでy,SharedDataクラスには影響がない x.spam = 80 print x.spam, y.spam, SharedData.spam #クラス変数に値を入れるのでy,SharedDataクラスにのみ影響が出る SharedData.spam = 0 print x.spam, y.spam, SharedData.spam
実行すると
42 42 42 80 42 42 80 0 0
となる。
ここでいやらしいのは'x.spam = 80'と値を入れてしまった時点でインスタンス変数的に扱われてしまう点だろう。
(クラス変数の変更が反映されなくなってしまう)
基本的にJavaと同じルールなものがなく(”Javaでいうところの〜”みたいなものがないってこと)+αとなってしまうのでJava⇔Pyhtonを行き来する際にはちょっと注意必要かも
うくく。