クラスを正しく使用する方法を学ぶのに苦労しているようです。次のコードが一連のファイルをループし (実行する)、要素をセットに追加し (実行する)、新しいファイルに移動したときにセットを最初からやり直す (実行しない) ことを期待しています。file.terminals
以下のコードをハッキングした方法では、各セットはクラスの新しいインスタンスの一意の属性であると考えているため、毎回空のセットを返すと予想されますSrcFile
。どうやら、私は間違っています。実際には、最初のファイルによって作成された端末のセットは、リスト内の後続のすべてのファイルに対して保持されます (追加されます) file.name
。file.seqlength()
) ファイルで適切に変更します。誰かがなぜこのように機能するのか、どうすれば期待どおりの動作を作成できるのかを説明できますか? 初心者のプログラマーの無知をご理解いただき、ありがとうございます。
class SrcFile:
terminals = set([])
def __init__(self, which):
self.name = which
def seqlength(self):
with open(self.name) as file:
linecounter = 0
for line in file:
linecounter += 1
if linecounter == 3:
return int(line.split()[0])
break
class Record(SrcFile):
def terminal(self):
record = self.name
def terminal(self):
record = self.name
return record.split()[0]
for f in files:
file = SrcFile(f)
print(file.name, file.seqlength(), file.terminals)
with open(f) as f:
recordline = re.compile(r"^([A-Z]{5})\s{3}")
for line in f:
if recordline.match(line):
record = Record(line)
if record.terminal() in file.terminals:
pass
else:
file.terminals.add(record.terminal())