2016-03-20 4 views
-4

Я пытаюсь выполнить итерацию по массиву (фактически конкатенация группы массивов) с использованием цикла for.Что такое тип данных i в «for i in array»

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

Здесь i является объектом типа книги и поэтому объекты в BOOK1, book2 и book3.

При запуске этого кода я получаю сообщение об ошибке.

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

Я определил pageno в классе книги, который был импортирован.

+6

Это означает, что одним из элементов в iterarable является '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

Это так ответит на вопрос. Возможно, ответ не должен включать вопрос к плакату, но ответ на этот вопрос действительно «ваш конкатенированный массив - это массив целых чисел» (или по крайней мере содержит хотя бы один). – GreenAsJade

0

Попробуйте искать в книге * массивы:

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

и, почему бы и нет, попробуйте искать тип I в петлю:

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

Теперь вы можете обнаружить изъян: -)