title: Python abstract attribute and inheritance
body: <p>Say I have the following code:</p>
  
  <pre><code>class Archive(object):
      """ Archiv-File wrapper """
      READ_MODE = 0
      WRITE_MODE = 1
  
      def __init__(self, file_):
          self.file_ = file_
          self._mode = None
  
      @property
      def mode(self):
          return self._mode
  
      @mode.setter
      def mode(self, value):
          self._mode = value
  
      def open(self, mode="r", pwd=None):
          raise NotImplemented("Subclasses should implement this method!")
  
      def close(self):
          raise NotImplemented("Subclasses should implement this method!")
  
  ################################################
  
  class GzipGPGArchive(Archive):
      READ_MODE = 'r:gz'  # Open for reading with gzip compression.
      WRITE_MODE = 'w:gz'  # Open for gzip compressed writing.
      SUFFIX = "tar.gz.gpg"
  
      def __init__(self, *args, **kwargs):
          super(GzipGPGArchive, self).__init__(*args, **kwargs)
  
      @mode.setter # This causes unresolved reference
      def mode(self, value):
          # do internal changes
          self._mode = value
  
      def open(self):
          pass
  
      def close(self):
          pass
  </code></pre>
  
  <p>so know what is the best pythonic way to override the setter and getter method of the Abstract class attribute <code>mode</code>. </p>
  
  <p>Overriding <code>@mode.setter</code> in the sub-class <code>GzipGPGArchive</code> causes unresolved reference! </p>