0

スクリプトで処理する必要がある多くのデータ ファイルの属性を格納するためのクラスを作成したいと考えています。属性は、データファイルにある値、またはデータファイルにある他の値から計算された値です。

残念ながら、私はその目標を達成するために書いたコードの出力を理解していません。これがすべきことは次のとおりです。処理中のファイルの名前とそのファイルの値seqlengthを出力します。実際の出力は、コードの下に示されています。

class SrcFile:

   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:
            self.seqlength = int(line.split()[0])
            break

for f in files:
    file = SrcFile(f)
    print(file.name, file.seqlength)

これfile.nameは期待どおりに出力されfile.seqlengthますが、理解できない値が返されるためです。

../Testdata/12_indels.ss <bound method SrcFile.seqlength of <__main__.SrcFile object at 0x10066cad0>>

クラスと関数について基本的なことを理解していないことは明らかです。ここで何が欠けているかは明らかですか?

4

2 に答える 2

2

.seqlengthはメソッドであり、必要()がありますが、そこから何も返していません。代わりにこれを試してください:

 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])

そして、それを呼び出します:

for f in files:
    file = SrcFile(f)
    print(file.name, file.seqlength())
于 2012-06-19T16:19:30.350 に答える
0

.seqlengthメソッドだからです。

やってみる

print(filename, file.seqlength())
于 2012-06-19T16:18:08.897 に答える