gpt4 book ai didi

python - 追加到 python 对象列表时出错

转载 作者:行者123 更新时间:2023-12-02 02:40:45 25 4
gpt4 key购买 nike

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

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

我正在使用以下代码循环遍历这些名为 dofilesdofile 对象列表(在我运行填充每个对象的行列表之后)我知道工作正常)。有问题的代码检测到短语 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]) 但似乎没有什么区别。

谢谢。

最佳答案

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

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

关于python - 追加到 python 对象列表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63676135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com