title: Why do you need explicitly have the "self" argument in a Python method?
body: <p>When defining a method on a class in Python, it looks something like this:</p>
  
  <pre><code>class MyClass(object):
      def __init__(self, x, y):
          self.x = x
          self.y = y
  </code></pre>
  
  <p>But in some other languages, such as C#, you have a reference to the object that the method is bound to with the "this" keyword without declaring it as an argument in the method prototype.  </p>
  
  <p>Was this an intentional language design decision in Python or are there some implementation details that require the passing of "self" as an argument?</p>