On Wed, Jun 20, 2018 at 10:03 AM Serhiy Storchaka <storch...@gmail.com>
wrote:

> 20.06.18 19:37, Guido van Rossum пише:
> > On Wed, Jun 20, 2018 at 9:31 AM Serhiy Storchaka
> > <storch...@gmail.com
> > <mailto:storch...@gmail.com>> wrote:
> >
> >     20.06.18 19:20, Guido van Rossum пише:
> >      > +1 -- when we introduced these we didn't see the use case so
> >     clearly,
> >      > but it definitely exists.
> >
> >     How would you call a classmethod descriptor in this case?
> >
> >
> > With an extra first argument that's a class -- it should just call the
> > wrapped function with whatever args are presented to the descriptior.
>
> This differs from calling a class method outside of the class definition
> body. And in the class definition body the class is not defined still.
>
> class Spam:
>      @classmethod
>      def utility(arg):
>          ...
>
>      value = utility(???, arg)
>

Maybe we're misunderstanding each other? I would think that calling the
classmethod object directly would just call the underlying function, so
this should have to call utility() with a single arg. This is really the
only option, since the descriptor doesn't have any context.

In any case it should probably `def utility(cls)` in that example to
clarify that the first arg to a class method is a class.

-- 
--Guido van Rossum (python.org/~guido)
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to