2017-01-06 9 views
0

次のPythonコードを記述しました。新しいインスタンスを取得できません

私はので、私はtmp.cを印刷するたびに、私は"[1]"を取得する必要があり、すべてのループに新しいtmpインスタンスを期待していました。

どうしてですか?

class f(): 
    c = [] 
    def __init__(self): 
     self.c.append(1) 

for i in range(5): 
    tmp = f() 
    print(tmp.c) 
    print(tmp) 

出力は次のとおりです。

<__main__.f object at 0x7f7566b0b7f0> 
[1, 1] 
<__main__.f object at 0x7f7566b0b668> 
[1, 1, 1] 
<__main__.f object at 0x7f7566b0b828> 
[1, 1, 1, 1] 
<__main__.f object at 0x7f7566b0b668> 
[1, 1, 1, 1, 1] 
<__main__.f object at 0x7f7566b0b828> 
+0

のような何かをしたい

は、あなたがクラスVAを共有する新しいインスタンスを作成_are_ 「c」と呼ばれるものです。 – ForceBru

答えて

0

cは静的変数であり、それはクラスに属し、インスタンス にあなたはID(c)を行うと、IDは常に同じである見ることができますあなたが実際にこの

class f(): 
    def __init__(self): 
     self.c = [1] 

for i in range(5): 
    tmp = f() 
    print(tmp.c) 
    print(tmp) 
関連する問題