我已经定义了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])
,但似乎没有什么不同
谢谢
您正在创建静态变量,这些变量在所有
dofile
类实例中都是一致的。本质上,所发生的事情不是所有dofile实例都有一个“输入”列表,而是每个实例都指向一个列表。要使它们特定于单个实例,请在__init__
类中初始化它们:相关问题 更多 >
编程相关推荐