title: What is the difference between super() with arguments and without arguments?
body: <p>I encountered a code which uses the <code>super()</code> method in 2 different ways, and I can't understand what's the difference in the logic. </p>
  
  <p>I'm learning right now the <code>pygame</code> module and I got a task to create a class of a <code>Ball</code> which inherits from <code>Sprite</code> which is a class from the <code>pygame</code> module (if I'm not mistaken). </p>
  
  <p>I encountered this code:</p>
  
  <pre><code>import pygame
  
  class Ball(pygame.sprite.Sprite):
  
      def __init__(self, x, y):
          super(Ball, self).__init__()
  </code></pre>
  
  <p>And I can't understand the difference from:</p>
  
  <pre class="lang-py prettyprint-override"><code>import pygame
  
  class Ball(pygame.sprite.Sprite):
  
      def __init__(self, x, y):
          super().__init__()
  </code></pre>
  
  <p>(Argument of <code>super()</code> method)</p>
  
  <p>What is the difference between those code blocks in their logic? Why do I need to pass to <code>super()</code> method arguments? What are those arguments required to be?</p>