question: Add Question._state_attributes for easier subclassing
authorW. Trevor King <wking@tremily.us>
Tue, 5 Feb 2013 16:05:15 +0000 (11:05 -0500)
committerW. Trevor King <wking@tremily.us>
Tue, 5 Feb 2013 16:05:40 +0000 (11:05 -0500)
This way subclasses can extend the list instead of overriding
__getstate__.

quizzer/question.py

index 10ae4fd2003e6c503907fc0a649b31615564a3ad..f2e8ed037cb725f24189ad1b088b3665040b78cc 100644 (file)
@@ -6,6 +6,14 @@ def register_question(question_class):
 
 
 class Question (object):
+    _state_attributes = [
+        'id',
+        'prompt',
+        'answer',
+        'help',
+        'dependencies',
+        ]
+
     def __init__(self, id=None, prompt=None, answer=None, help=None,
                  dependencies=None):
         if id is None:
@@ -26,13 +34,8 @@ class Question (object):
             type(self).__name__, self.id, id(self))
 
     def __getstate__(self):
-        return {
-            'id': self.id,
-            'prompt': self.prompt,
-            'answer': self.answer,
-            'help': self.help,
-            'dependencies': self.dependencies,
-            }
+        return {attr: getattr(self, attr)
+                for attr in self._state_attributes} 
 
     def __setstate__(self, state):
         if 'id' not in state: