[Python-ideas] staticmethod and classmethod should be callable

Guido van Rossum guido at python.org
Wed Jun 20 13:07:54 EDT 2018


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

> 20.06.18 19:37, Guido van Rossum пише:
> > On Wed, Jun 20, 2018 at 9:31 AM Serhiy Storchaka
> > <storchaka at gmail.com
> > <mailto:storchaka at 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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180620/004890ec/attachment-0001.html>


More information about the Python-ideas mailing list