Bjoern Schliessmann a écrit : > Bruno Desthuilliers wrote: >> Bjoern Schliessmann a écrit : > >>> Why don't you make a preprocessor which accepts method >>> declarations without "self" and fixes them? >> The problem being that there's no such thing as a "method >> declaration" in Python > > Yep, there are only definitions. I'm sorry. > >> - only functions being attributes of a class... > > What, IYHO, is the difference between a method and a function?
A method is a thin wrapper around a function, usually instanciated and returned by the __get__ method [1] of the function itself when the function is looked up as an attribute of a class or an instance: >>> class Foo(object): ... def meth(self): ... print "in %s meth" % self ... >>> Foo.__dict__['meth'] <function meth at 0xb7d76374> >>> Foo.meth <unbound method Foo.meth> >>> Foo().meth <bound method Foo.meth of <__main__.Foo object at 0xb7d7acac>> >>> [1] you may want to read about the descriptor protocol which is the base mechanism on which methods and properties (computed attributes) are based. >> (ok, I know, you meant "functions declared within a class >> statement"). > > I think that those functions _are_ special ones They aren't, and you should perhaps read the manual - all this is documented. > since the compiler > is able to make "method(instance, a, b)" out of > "instance.method(a, b)". Once again, the compiler has *nothing* to do with this. Else, how could you do this: >>> def fun(obj): ... print obj ... >>> Foo.fun = fun >>> Foo.fun <unbound method Foo.fun> >>> Foo().fun <bound method Foo.fun of <__main__.Foo object at 0xb7d7ad6c>> >>> fun <function fun at 0xb7d763ac> >>> Foo.__dict__['fun'] <function fun at 0xb7d763ac> >>> > So IMHO, "method definition" makes sense. It doesn't. -- http://mail.python.org/mailman/listinfo/python-list