title: Python Abstract Attribute
body: <p>I will only have a single Abstract Class in this particular module and so I'm trying to avoid importing the "ABC" package. See below for my attempt and the issue I'm running into. I only want to use basic <code>self.attribute = {etc...}</code> assignment in the <code>__init__</code> method of the subclass but I want to ensure it is done via the AbstractClass. I've seen some questions here but the answers all reference "ABC" package which I would agree is the best solution but not for simply one class in an entire program...</p>
  
  <pre><code>from .util import EventType, NpcType
  
  
  class Event(object):
      @property
      def requirements(self):
          raise NotImplementedError('subclasses must have requirements')
  
      @requirements.setter
      def requirements(self, value):
          pass
  
      def stage(self):
          raise NotImplementedError('subclasses must override stage()')
  
  
  class NRMSAL(Event):
      def __init__(self):
          self.requirements = {
              'npc_type': [NpcType.TRAPPER],
              'last_event': [],
              'cash_available': False,
              'item_available': True
          }
  
      def stage(self):
          pass
  </code></pre>
  
  <p>In the above example I receive the following error when attempting to access the attribute at run time:</p>
  
  <pre><code>from drapi.event import NRMSAL
  test = NRMSAL()
  print test.requirements
  Traceback (most recent call last):
    File "&lt;input&gt;", line 1, in &lt;module&gt;
    File "/Users/rickmartin/Dropbox/Projects/NpcProject/drapi/event.py", line 7, in requirements
      raise NotImplementedError('subclasses must have requirements')
  NotImplementedError: subclasses must have requirements
  </code></pre>