On Sat, Sep 12, 2020 at 07:25:30PM -0400, Eric V. Smith wrote: > On 9/12/2020 7:13 PM, Random832 wrote: > >On Fri, Sep 11, 2020, at 19:57, Cameron Simpson wrote: > >>The default (an instance method) requires "self" to perform. > >Of course, this is only the default if the method is a function object. If > >it is a different callable class, the default is effectively staticmethod. > > > >Perhaps there should be an @instancemethod? > > What would that let us do that we can't currently achieve?
We already have an instancemethod, it's just spelled differently: py> from types import MethodType And while it is not useful as a decorator, it is *really* useful for adding methods to an individual instance rather than the class: py> class K: ... pass ... py> obj = K() py> obj.method = lambda self, x: (self, x) py> obj.method('arg') # Fails Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: <lambda>() missing 1 required positional argument: 'x' But this works: py> obj.method = MethodType(lambda self, x: (self, x), obj) py> obj.method('arg') (<__main__.K object at 0x7f67a4e051d0>, 'arg') So an instancemethod decorator would be a waste of time, but the instancemethod type, spelled types.MethodType, is very useful. -- Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/D24PW37YSIHV2XHNHARQLM4EMHH6GQKD/ Code of Conduct: http://python.org/psf/codeofconduct/