2010-12-08 7 views
1

私はsimplejsonでダンプできないオブジェクトを持っていますので、まずそれからリストを作成する必要があります。オブジェクトの内容を含むリストをロードする

messages = h.flash.pop_messages() 
    items = [] 
    for message in messages: 
     item = {} 
     item['category'] = message.category 
     item['message'] = message.message 
     items.append(item) 

は、私は私がこれをやっているため、誰でもいくつかの光を当てることができ、より神託の方法があるように感じる:現在、これは私が使用している何ですか?

編集:

要求されたように、これは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

難しいと感じるクラスのコードを教えてください。 – wheaties

+0

これはPylonsのもので、webhelpers.pylonslibのMessageクラスです –

答えて

5
items = [{'category': m.category, 'message': m.message} 
    for m in h.flash.pop_messages()] 
+0

Ignacioに感謝します。私はリストの理解を介してそれを行ういくつかの方法があると思った。 –

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] 
+0

脇に。メッセージオブジェクトの再構築も本当に簡単なはずです - 'm = Message(** messageDict)' – Dunes

関連する問題