title: Why does Python make self explicit?
body: <p>Why does Python need an explicit <code>self</code> parameter in every argument list?</p>
  
  <p>For example in the class Complex given in the documentation</p>
  
  <pre><code>class Complex: 
  
      def __init__(self, realpart, imagpart):
          self.r = realpart
          self.i = imagpart
  
      def conjugate(self):
          self.i = -self.i
  
  
  x = Complex(3.0, -4.5) # 2 instead of 3?
  x.conjugate()          # No parameters?
  </code></pre>
  
  <p>I initially found it profoundly confusing, that <code>__init__( )</code> seems to require 3
  arguments, but you call <code>Complex( )</code> with only 2.</p>
  
  <p>What is the reason the <code>self</code> parameter is explicit and not implicit?</p>