返回变量属性的对象属性值

2024-09-29 17:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试设置一个调试页,其中包含对象、对象属性名和对象属性值的列表。我试图获取特定对象类型的特定属性的值。在编写代码时,对象类型和属性都不知道。在

以下是我的相关章节:

在我的测试.py在

if self.request.get('objID'):
  qGet = self.request.get
  thisObj = db.get(db.Key(qGet('objID')))

template_values = { 'thisObj' : thisObj }

template = JINJA_ENVIRONMENT.get_template('objProp.html')
self.response.write(template.render(template_values))

在我的objProp.html文件模板

^{pr2}$

但是,由于thisObj中没有属性p,所以它总是输出一个空值,实际上就是我想要的,所以打印出在循环的那个特定点p所引用的任何属性的值

任何帮助都将不胜感激!在


Tags: 对象self类型列表dbget属性request
2条回答

您不应该使用thisObj.p,因为您没有在thisObj中查找名称。^此实例中的{}不是循环中的p,而是试图引用名为“p”的属性或方法。在

你应该用

getattr(thisObj,p)

这是我开始工作的方法。我不会接受它,因为我还不相信它是一个“好”的方法。在

另请参见:Google App Engine: how can I programmatically access the properties of my Model class?

这个问题让我大开眼界,下面是我正在使用的,它似乎正常工作:

{% if thisObj %}
  <ul>List of properties
  {% for p in thisObj.properties() %}
    <li>{{ p }} : {{ thisObj.properties()[p].get_value_for_datastore(thisObj) }}</li>
  {% endfor %}
  </ul>
{% endif %}

看起来p解析为一个字符串,thisObj.properties()[p]返回object属性,然后我只需要用.get_value_for_datastore(thisObj)从该对象中获取值

引用自此处的文档:The Property Class

相关问题 更多 >

    热门问题