Why does Python make self explicit?
<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>
