Python 创建新对象实例时,其中仍有旧数据

Python 创建新对象实例时,其中仍有旧数据,python,Python,我有一个文件,它对我传递给它的对象运行一些分析 大概是这样的: 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 import os import sys TEST_DIR = os.path

我有一个文件,它对我传递给它的对象运行一些分析

大概是这样的:

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
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)
我有另一个文件,我在其中定义了我想要处理的信息

test2.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
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()
创建对象的新实例?

在以下代码中
var\u数组
是类变量(由
test
对象的所有实例共享):

要定义实例变量,您应该在
\uuuu init\uuu
方法中对其进行初始化,如下所示:

class Test:
    def __init__(self):
        self.var_array = []

如果TEST_DIR不在sys.path中,那么肯定
if TEST_DIR应该是
。只是一个拼写错误,现在已修复。