关于python:创建新的对象实例中仍然有旧的数据

Creating new object instance still has old data in it

本问题已经有最佳答案,请猛点这里访问。

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

像这样:

test.py

1
2
3
4
5
6
7
8
9
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

1
2
3
4
5
6
7
8
9
10
11
12
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)

所以如果我多次运行这个

1
2
3
4
5
6
7
8
9
10
11
In [1]: %run test2.py
foo

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

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

我做错什么了?test = Test()不应该创建对象的新实例吗?


在以下代码中,var_array是类变量(由Test对象的所有实例共享):

1
2
class Test:
    var_array = []

要定义实例变量,您应该在__init__方法中初始化它,如下所示:

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