迭代类属性

时间:2016-11-28 21:36:34

标签: python python-3.x

我的课程abalone包含三个属性MIF。像这样访问它们:

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

不幸的是没有工作。

编辑:尝试

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'

也不起作用。

1 个答案:

答案 0 :(得分:1)

试试这个:

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

如果它不起作用,请告诉我。

编辑(根据问题的变化):

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

这里我将包含您要访问的属性子集。