Placing 'self' in the parameter list allows external procedures to be monkey-patched into a class, without needing to wrap it up in a 'partial'. For example:<p><pre><code>  def foo(self, x):
    self.bar(x, 42)

  class MyClass:
    def bar(self, x, y):
        print ("%s %s" % (x, y))

  MyClass.foo = foo
</code></pre>
While this is ugly, there are times when augmenting (or replacing) a class's existing methods is useful.