On May 8, 2020, at 15:44, Steven D'Aprano <st...@pearwood.info> wrote: > > On Fri, May 08, 2020 at 10:46:45PM +0300, Serhiy Storchaka wrote: > >> I propose to add the METH_GENERAL flag, which is applicable to methods >> as METH_CLASS and METH_STATIC (and is mutually incompatible with them). >> If it is set, the check for the type of self will be omitted, and you >> can pass an arbitrary object as the first argument of the unbound method. > > Does this effect code written in Python? As I understand, in Python > code, unbound methods are just plain old functions, and there is no > type-checking done on `self`. > > py> class C: > ... def method(self, arg): > ... return (self,) > ... > py> C.method(999, None) > (999,) > > So I think your proposal will only affect builtin methods written in C. > Is that correct?
Maybe the best way to see it is this: For classes implemented in Python, you have to go out of your way to typecheck self. For classes implemented in C, you have to go out of your way to _not_ typecheck self. It’s probably way too big of a change to make them consistent at this point, so Serhiy is just proposing a way to make it a lot easier for C methods to act like Python ones when you need them to. And, given that he has some solid use cases, it’s hard to see any problem with that. _______________________________________________ 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/JKAYR4SWRM7HTJS3RN775R2I4K3B75XQ/ Code of Conduct: http://python.org/psf/codeofconduct/