リストのオブジェクトのインスタンスのインデックスを取得しようとしました。そして私はfor-loopなしでそれをする方法を知らない。リストからクラスのインスタンスを返すPython
誰かが私に正しい方向を教えてもらえれば、それをループしないでください。
リストにはany() - 関数のインスタンスがありますが、そのインデックスからインデックスを取得することはできません。
私は自分の問題を明確にしようとします。 any() - fucntionがそのリスト(self.data)を見つけることができる場合、objectのインスタンスを持ちます。 any() - 関数はtrue/falseのみを返します。私はそれを呼び出すことができるように、そのインスタンスのインデックスを取得する機能や方法がありますか?
とコード:
self.data
リスト内のオブジェクトとそのインデックスのインスタンスを得ることに焦点を当て
class MyClass:
def __init__(self, f):
self.data = []
self.f = open(f, "rb")
self.mod = sys.modules[__name__]
def readFile(self):
f = self.f
try:
self.head = f.read(8)
while True:
length = f.read(4)
if length == b'':
break
c = getattr(self.mod, f.read(4).decode())
if any(isinstance(x, c) for x in self.data):
index = self.data.index(c) #Problem is here
self.data[index].append(f.read(int(length.hex(), 16)))
else:
obj = c(data=f.read(int(length.hex(), 16)))
self.data.append(obj)
f.read(4) #TODO check CRC
finally:
f.close()
おそらく、クラスレベルではなく、initで 'self.data = []'を設定する必要がありますか? –
あなたは読んでいるサンプルファイルを提供できますか? – urban
良い点、@JohnZwinck。コードは学習目的であり、私が間違って行ったことが何らかの目的やコメントであれば、私はそれらについて聞いてうれしいです。 – Evus