Why isn't self being automatically passed to a method that is set on an object after its instantiation?
<pre><code> class Person():
    pass;
 def say_hi(self):
    print 'hii'

 me=Person()
 me.say_hi=say_hi
 me.say_hi()
</code></pre>

<p>Isn't the self argument automatically passed in python ? why why is calling <code>me.say_hi()</code> is giving a stack trace ? </p>

<pre><code>Traceback (most recent call last):
  File "&lt;input&gt;", line 1, in &lt;module&gt;
TypeError: say_hi() takes exactly 1 argument (0 given)
</code></pre>
