附加到python对象列表时出错

2024-09-30 01:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经定义了class dofiles的一系列python对象,它们有一个名称和一些空列表

class dofile:
    name = ""
    lines = []
    inputs = []
    outputs = []
    intermediates = []

我正在使用下面的代码循环遍历这些dofile对象的列表,称为dofiles(在我运行了填充每个对象的行列表的代码之后,我知道这些对象工作正常)。有问题的代码检测短语using及其后面的单词,然后应该将单词附加到每个对象的输入列表中

for dofile in dofiles:
    for line in dofile.lines:
        # using
        using_tups = re.findall(r'(using)\s([^\s,]+)', line)
        for tuple in using_tups:
            dofile.inputs.append(tuple[1])

但是,我最终将这个词附加到dofiles中所有dofile对象的输入列表中。(例如:print(dofiles[0].inputs)print(dofiles[1].inputs)返回相同的内容,尽管它们扫描不同的文件)

我是否遗漏了Python中对象、列表或循环的工作方式

我试过(dofile.inputs).append(tuple[1]),但似乎没有什么不同

谢谢


Tags: 对象代码in列表forline单词class
1条回答
网友
1楼 · 发布于 2024-09-30 01:37:25

您正在创建静态变量,这些变量在所有dofile类实例中都是一致的。本质上,所发生的事情不是所有dofile实例都有一个“输入”列表,而是每个实例都指向一个列表。要使它们特定于单个实例,请在__init__类中初始化它们:

class dofile:
    def __init__(self):
        self.name = ""
        self.lines = []
        self.inputs = []
        self.outputs = []
        self.intermediates = []

相关问题 更多 >

    热门问题