2016-11-28 4 views
1

У меня есть класс abalone с тремя атрибутами M, I и F. Доступ к ним следующим образом:Итерация над атрибутами класса

abalone.M 
Out[81]: 
array([[ 0.455 , 0.365 , 0.095 , ..., 0.2245, 0.101 , 0.15 ], 
     [ 0.35 , 0.265 , 0.09 , ..., 0.0995, 0.0485, 0.07 ], 
     [ 0.44 , 0.365 , 0.125 , ..., 0.2155, 0.114 , 0.155 ], 
     ..., 
     [ 0.59 , 0.44 , 0.135 , ..., 0.439 , 0.2145, 0.2605], 
     [ 0.6 , 0.475 , 0.205 , ..., 0.5255, 0.2875, 0.308 ], 
     [ 0.71 , 0.555 , 0.195 , ..., 0.9455, 0.3765, 0.495 ]]) 

работает великолепно. Как я буду продолжать перебирать их? Моя попытка

for item in [M, I, F]: 
    abalone.item 
    --------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-84-c9c2187c3451> in <module>() 
----> 1 for item in [M, I, F]: 
     2  abalone.item 

NameError: name 'M' is not defined 

не работает, к сожалению.

Edit: Попытка

for item in ['M', 'I', 'F']: 
    abalone.item 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-86-b9d61335686f> in <module>() 
     1 for item in ['M', 'I', 'F']: 
----> 2  abalone.item 

AttributeError: 'Abalone' object has no attribute 'item' 

не работает.

+0

Тип abalone.M - это 'array.array' или' list'? Извините, меня это смущает. –

+1

Это массив numpy. – sbm

ответ

1

Попробуйте это:

for attr, value in abalone.__dict__.items(): 
    print attr,value 

Если он не работает, то дайте мне знать.

Edited (в соответствии с изменением задачи):

l = ['M','I','F'] 
for attr, value in x.__dict__.iteritems(): 
    if attr in l: 
     print attr,value 

Здесь л будет содержать подмножество атрибутов, которые вы хотите получить доступ.

+0

К сожалению, это была опечатка. Исправил мой вопрос и опробовал ваше предложение, которое, к сожалению, не работает. – sbm

+0

все в порядке. Я отредактировал свой ответ, попробовав этот метод. Протестировал это сам, чтобы он работал. –

+0

Спасибо, это работает, но, к сожалению, это не помогает в моем случае, потому что я только итерации через подмножество. Поэтому мне нужно, чтобы мой код работал выше. – sbm

Смежные вопросы