我有一个无法被simplejson
转储的对象,所以我需要先从它创建一个列表。目前这就是我正在使用的:
messages = h.flash.pop_messages()
items = []
for message in messages:
item = {}
item['category'] = message.category
item['message'] = message.message
items.append(item)
我觉得我有更多的pythonic方法可以做到这一点,任何人都可以解决这些问题吗?
修改
根据要求,这是Message对象的类:
class Message(object):
"""A message returned by ``Flash.pop_messages()``.
Converting the message to a string returns the message text. Instances
also have the following attributes:
* ``message``: the message text.
* ``category``: the category specified when the message was created.
"""
def __init__(self, category, message):
self.category=category
self.message=message
def __str__(self):
return self.message
__unicode__ = __str__
def __html__(self):
return escape(self.message)
答案 0 :(得分:5)
items = [{'category': m.category, 'message': m.message}
for m in h.flash.pop_messages()]
答案 1 :(得分:0)
如果可以,那么只需从对象
获取继承消息 object提供了一个__dict__
属性,它是对象的所有实例属性的字典(而不是类属性或继承的属性)。如果您需要稍后向消息添加更多属性,则使用此方法将使您的代码不太可能中断。
class Message(object):
classAttribute = None # will not feature in __dict__
def __init__(self,category,message):
self.category = category
self.message = message
messages = h.flash.pop_messages()
items = [message.__dict__ for message in messages]