クラス変数?インスタンス変数? - Ponsukeの日記
これこれ
例えば
class A(object):こんなの実行すると
n = 0
l = []
def __init__(self):
print self.n, self.l
self.n = self.n + 10
self.l.append(10)
print self.n, self.l
A()
A()
0 []ってなって
10 [10]
0 [10]
10 [10, 10]
「なんで self.n が 0 に戻るんだYo!!」
とか思うわけですが
- 変数を参照するときはインスタンス変数探して無かったらクラス変数も見にいく
- 代入するときはインスタンス変数で無かったらインスタンス変数作る
self.n = self.n + 10この右辺はクラス変数を見てるけど左辺はインスタンス変数なのでした。
クラス変数もインスタンスから self.xxx でアクセスできるとあるけれど
何か混乱しそうなので注意するか別の方法をとるかした方がいいなぁ
と思いました
0 件のコメント:
コメントを投稿