【问题标题】:Creating new object instance still has old data in it [duplicate]创建新对象实例中仍然有旧数据[重复]
【发布时间】:2013-09-26 02:52:21
【问题描述】:

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

类似这样的:

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() 不应该创建对象的新实例吗?

【问题讨论】:

  • 当然if TEST_DIR in sys.path 应该是if TEST_DIR not in sys.path...
  • @kind 好吧。只是一个错字,现已修正。

标签: python


【解决方案1】:

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

class Test:
    var_array = []

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2017-04-05
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多