dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2198
  • 铜币13926枚
  • 威望6043点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:240回复:0

如何在循环中遍历 python对象的属性?

楼主#
更多 发布于:2019-01-08 13:40
问题描述
Asset 是一个 models类(django), asset 是 Asset类的对象,asset_list 列表对应了 Asset 类中的属性。
在使用 for循环遍历 asset对象中的属性,提示 asset.i 不存在这个属性。
>>> asset = Asset()
>>> a1.name
''
>>> asset_list
['name', 'category', 'project', 'os', 'wan', 'lan', 'remote', 'device', 'cpu', 'cores', 'memory', 'disk', 'remark', 'platform', 'region']

>>> for i in asset_list:
...   print(asset.i)
...
Traceback (most recent call last):
  File "<console>", line 2, in <module>
AttributeError: 'Asset' object has no attribute 'i'

解决方法
使用 x.__dict__ 属性,获得一个字典,包括 属性名字和属性值。
>>> asset.__dict__
{'platform_id': None, 'remark': '', 'cpu': '', 'cores': None, 'id': None, 'remote': '', 'wan': '', 'author_id': None, 'os': '', 'project_id': None, '_category_cache': None, 'category_id': None, 'region_id': None, 'offline': False, 'disk': None, 'device': '', '_region_cache': None, '_project_cache': None, '_author_cache': None, 'memory': None, 'name': '', '_state': <django.db.models.base.ModelState object at 0x7fde2a1f8cc0>, 'created_time': None, '_platform_cache': None, 'lan': ''}
回到上面的例子,使用 x.__dict__ 解决这个问题。
>>> for i in asset_list:
...   print(asset.__dict__\[i\])

参考: https://bbs.csdn.net/topics/390087385
#
欢迎关注微信公众号: 运维录
游客

返回顶部