However, the syntax for the explicit self is somewhat awkward. Instead of: def f(self, a, b): ... it could have been def self.f(a, b): ...
[This isn't original to me - Guido has mentioned it when he gets tired of hearing about explicit self.]
With the second, the structure of the argument list in the definition looks like the structure of the argument list in the call and the "self" is where the instance comes from relative to the method name.