On 8/31/2011 10:35 AM, T. Goodchild wrote:
But one of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. On a gut level, to me this seems to be at odds with Python’s dedication to simplicity.
Actually, it is a consequence of Python's dedication to simplicity. A method is simply a function that is an attribute of a class. (This is even clearer in Py 3.) Hence, there is no special syntax for methods.
Consider def double(obj): return 2*obj.value class C: def __init__(self, val): self.value = val c = C(3) C.double = double c.doub = double # not c.double as that would mask access to C.double in c.double() below print(double(c), C.double(c), c.double(), c.doub(c)) # 6 6 6 6 -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list