我有一个名为“form”的Python对象,如下所示:
> dir(form)
['Meta', 'SECRET_KEY', 'TIME_LIMIT', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_errors', '_fields', '_get_translations', '_prefix', '_unbound_fields', '_wtforms_meta', 'csrf_enabled', 'csrf_token', 'data', 'errors', 'f', 'generate_csrf_token', 'hidden_tag', 'i', 'is_submitted', 'meta', 'node_1', 'node_2', 'node_3', 'node_4', 'nodes', 'populate_obj', 'process', 'r', 'reader', 'submit', 'validate', 'validate_csrf_data', 'validate_csrf_token', 'validate_on_submit']
此对象始终包含给定数量的名称以“node_”开头的对象。这些对象的数量总是不同。
我需要从另一个函数中检索所有这些对象,并获取form.node_1.data,form.node_2.data,form.node_3.data等的内容。
我可以列出所有这些“节点”对象:
for u in dir(form):
if not u.startswith('__'):
if u.startswith('node_'):
print u
但我得到的只是一个字符串,而不是对象本身。
如何访问所有这些“节点对象”的值?
(我希望词汇表是正确的......)
答案 0 :(得分:2)
尝试getattr
:
for u in dir(form):
if not u.startswith('__'):
if u.startswith('node_'):
print getattr(form, u)
答案 1 :(得分:1)
你可以轻松抓住这些:
atribs = [getattr(form, attr) for attr in dir(form) if attr.startswith('node_')]