On Sat, Sep 12, 2020, at 23:14, Steven D'Aprano wrote:
> 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:

This isn't what I was suggesting - I meant something like this:

class instancemethod:
    def __init__(self, wrapped):
        self.wrapped = wrapped
    def __get__(self, obj, objtype):
        if obj is None: return self.wrapped
        else: return MethodType(self.wrapped, obj)

this wouldn't be useful for functions, but would give other callables the same 
functionality as functions, automatically creating the bound method object, 
e.g.:

class D:
    def __init__(self, obj, *args): ...

class C:
    foo = instancemethod(D)

obj = C()
obj.foo(...) # D(obj, ...)

Same for other types of callables such as functools.partial objects etc.

> So an instancemethod decorator would be a waste of time, but the 
> instancemethod type, spelled types.MethodType, is very useful.
_______________________________________________
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/CYBMRSMOQOKSYELNW7AZ36WL3W23RD5Q/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to