title: Python 3 inheritance equivalent statements
body: <p>From the documentation here, it claims that super().method(arg) does the same thing as: super(C, self).method(arg).</p>
  
  <p><a href="https://docs.python.org/3/library/functions.html#super" rel="nofollow">https://docs.python.org/3/library/functions.html#super</a></p>
  
  <pre><code>class shape(object):
      def __init__(self, type):
          self.shapeType = type
  
  class coloredShape1(shape):
      def __init__(self, type, color):
          super().__init__(type)
          self.shapeColor = color
  
  class coloredShape2(shape):
      def __init__(self, type, color):
          super(shape, self).__init__(type)
          self.shapeColor = color
  
  circle = shape("circle")
  blueRectangle = coloredShape1("rectangle", "blue")
  redSquare = coloredShape2("square", "blue") 
  </code></pre>
  
  <p>There are no issues with the blueRectangle creation, however, the redSquare line throws the following expection:</p>
  
  <pre><code>Traceback (most recent call last):
    File "test.py", line 17, in &lt;module&gt;
      redSquare = coloredShape2("square", "blue")
  File "test.py", line 12, in __init__
    super(shape, self).__init__(type)
  TypeError: object.__init__() takes no parameters
  </code></pre>
  
  <p>I'm not understanding the difference between the two.  Can someone explain what I'm doing wrong?</p>