2016-03-20 6 views
-4

forループを使用して配列(実際には配列のグループを連結)を反復しようとしています。ここで"for i in array"内のiのデータ型は何ですか

for i in book1+book2+book3: 
    print i.pageno 

iはタイプの本の目的であるので、BOOK1、BOOK2およびBOOK3内のオブジェクトです。

このコードを実行すると、エラーが発生します。

AttributeError: 'int' object has no attribute 'pageno'

インポートされたブッククラスでpagenoを定義しました。

+6

これは、iterarableの要素の1つが 'int'であることを意味します。 'book1 + book2 + book3'を見て、' int'値を見つけて、それがなぜそこにあるのか、それを取り除く方法を理解してください。 –

+0

あなたのコードにブッククラス定義が示されている場合や、ブックインスタンスの作成方法の例があれば役に立ちます。 –

+0

これは、私が遭遇した状況を示すために作成したコード断片です。 @TomKarzes – Deepthy

答えて

1

「i」のタイプは[book1..book3]のタイプによって異なりますので、(book1 + book2 + book3)の値を確認することをお勧めします。 あなたが実際の型を知りたい場合は、あなたが例えば、タイプ(i)を試みること:

for i in [1, 3, 'five']: 
    print type(i) 

出力:

<type 'int'> 
<type 'int'> 
<type 'str'> 
1

あなたの連結配列は、整数の配列であるように見えます。整数オブジェクトにはデフォルトでpageno変数がありません。

+0

それは質問に答えます。おそらく答えはポスターに質問を含めるべきではないが、この質問への答えは実際には "あなたの連結配列は整数の配列です"(少なくとも少なくとも1つは含まれています)。 – GreenAsJade

0

配列*本に求めるようにしてください:

print(type(book1), type(book2), type(book3)) 

と、なぜ、ループの中に私のタイプを追求しようとしない。

bs = book1 + book2 + book3 
for i in bs: 
    print(i, type(i)) 

今あなたが欠陥を見つけることができます: - )

関連する問題