title: Inheritance issue when using super() (Python)
body: <p>below is two classes showing inheritance for an API I am working on.  So I want the base class, ServiceTemplateTest, to have a common set of properties for all services <strong>and</strong> to behave like an OrderedDict object.  So the base class inherirts from OrderedDict.  I then do a <code>super()</code> in the <code>__init__</code> in order to clear up the MRO issue.  Now when I actually use this base class, I am getting issues when I try to class <code>__init()</code> from the base class.  According to my debugger it's saying I need to call: <code>self._ServiceTemplateTest__init()</code>, but shouldn't it just be <code>__init()</code> since I call super()?  What is the proper way to allow me to inherit without have to do this call: <code>self._ServiceTemplateTest__init()</code>?</p>
  
  <p>Do I need to create an <code>__init__()</code> on the non-base classes where I have multiple super() calls?  If so, what super class should come first? </p>
  
  <p>Thank you for any advice you can provide!</p>
  
  <pre><code>from collections import OrderedDict
  import urllib2, json, urllib
  class ServiceTemplateTest(OrderedDict):
      _con = None
      _url = None
      def __init__(self, url, connection=None, initialize=False, **kwargs):
          super(ServiceTemplateTest, self).__init__()
          self._url = url
          self._con = connection
          if initialize:
              self.__init(connection)
      def __init(self, connection=None):
          if connection is None:
              connection = self._con
          attributes = [attr for attr in dir(self)
                        if not attr.startswith('__') and \
                        not attr.startswith('_')]
          params = {"f":"json"}
          params = urllib.urlencode(params)
          result = json.loads(
              urllib2.urlopen(url="{url}?{params}".format(url=self._url,
                                                          params=params)).read())
  
          for k,v in result.items():
              if k in attributes:
                  setattr(self, "_"+ k, v)
                  self[k] = v
              else:
                  self[k] = v
          self.__dict__.update(result)
      #----------------------------------------------------------------------
      @property
      def connection(self):
          return self._con
      #----------------------------------------------------------------------
      @connection.setter
      def connection(self, value):
          self._con = value
          self.refresh()
      #----------------------------------------------------------------------
      @property
      def url(self):
          return self._url
      #----------------------------------------------------------------------
      @url.setter
      def url(self, value):
          """"""
          self._url = value
          self.refresh()
      #----------------------------------------------------------------------
      def __str__(self):
          return json.dumps(self)
      #----------------------------------------------------------------------
      def __repr__(self):
          return self.__str__()
      #----------------------------------------------------------------------
      def refresh(self):
          self.__init()
  
  class SchematicService(ServiceTemplateTest):
      """schematic service"""
      _con = None
      _json_dict = None
      _json = None
      _url = None
      _nbSchematicLayers = None
      _nbTemplates = None
      _type = None
      _name = None
      _nbEstimatedDiagrams = None
      def __init__(self, url, connection=None, initialize=False, **kwargs):
          super(SchematicService, self).__init__(url=url, connection=connection,
                                                 initialize=initialize, **kwargs)
          self._url = url
          self._con = connection
          if initialize:
              self.__init(connection)
      #----------------------------------------------------------------------
      @property
      def nbSchematicLayers(self):
          if self._nbSchematicLayers is None:
              self.__init()
          return self._nbSchematicLayers
      #----------------------------------------------------------------------
      @property
      def nbTemplates (self):
          if self._nbTemplates  is None:
              self.__init()
          return self._nbTemplates
      #----------------------------------------------------------------------
      @property
      def type(self):
          if self._type  is None:
              self.__init()
          return self._type
      #----------------------------------------------------------------------
      @property
      def name(self):
          if self._name is None:
              self.__init()
          return self._name
      #----------------------------------------------------------------------
      @property
      def nbEstimatedDiagrams(self):
          if self._nbEstimatedDiagrams is None:
              self.__init()
          return self._nbEstimatedDiagrams
      @property
      def somerandompropertytest(self):
          return "hi"
  if __name__ == "__main__":
      url = "http://servicesbeta6.esri.com/arcgis/rest/services/S1_Schematics/MapServer"
      s = SchematicService(url=url, initialize=True)
      print s
  </code></pre>