10

渡したオブジェクトに対して何らかの分析を実行するファイルがあります

このようなもの:

test.py:

class Test:
    var_array = []

    def add_var(self, new_var):
        self.var_array.append(new_var)

def run(test):
    for var in test.var_array:
        print var

処理したい情報を定義する別のファイルがあります

test2.py:

import os
import sys

TEST_DIR = os.path.dirname(os.path.abspath(__file__))

if TEST_DIR not in sys.path:
    sys.path.append(TEST_DIR)
from test import *

test = Test()
test.add_var('foo')
run(test)

これを複数回実行すると

In [1]: %run test2.py
foo

In [2]: %run test2.py
foo
foo

In [3]: %run test2.py
foo
foo
foo

私は何を間違っていますか?test = Test()オブジェクトの新しいインスタンスを作成するべきではありませんか?

4

1 に答える 1

15

次のコードvar_arrayはクラス変数です (Testオブジェクトのすべてのインスタンスで共有されます)。

class Test:
    var_array = []

インスタンス変数を定義するには、次のように__init__メソッドで初期化する必要があります。

class Test:
    def __init__(self):
        self.var_array = []
于 2013-09-20T16:27:22.847 に答える