Python:使用for循环打印特定属性

时间:2015-07-23 23:37:59

标签: python-2.7

有没有办法循环遍历属性,而无需重新输入长名称?

我试图打印存储在对象中的值。问题是我不知道哪个属性存储了值,甚至不知道属性是什么。我使用dir(MyFunc)来查找属性是什么,但每次都有越来越多的属性需要查看。

>>> print dir(MyFunc)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', 'data']

>>> print dir(MyFunc.data)
['__call__', '__class__', '__closure__', '__code__', '__defaults__',
'__delattr__', '__dict__', '__doc__', '__format__', '__get__',
'__getattribute__', '__globals__', '__hash__', '__init__', '__module__',
'__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure',
'func_code', 'func_defaults', 'func_dict', 'func_globals', 'func_name']

所以我尝试使用for循环来打印每个属性的属性,但我无法找到如何执行此操作。

>>> for x in ['func_closure','func_code','func_defaults','func_dict']:
        y = MyFunc.data.x
        print y
Traceback (most recent call last):
File "myFile.py", line 127, in setUp
y = MyFunc.data.x
AttributeError: 'function' object has no attribute 'x'

1 个答案:

答案 0 :(得分:0)

使用getattr

for x in ['func_closure','func_code','func_defaults','func_dict']:
     y = getattr(MyFunc.data,x)
     print y