[Python-ideas] staticmethod and classmethod should be callable

Serhiy Storchaka storchaka at gmail.com
Wed Jun 20 13:27:17 EDT 2018


20.06.18 20:07, Guido van Rossum пише:
> 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.

Sorry, I missed the cls parameter in the definition of utility().

class Spam:
     @classmethod
     def utility(cls, arg):
         ...

     value = utility(???, arg)

What should be passed as the first argument to utility() if the Spam 
class (as well as its subclasses) is not defined still?


Maybe there is a use case for calling the staticmethod descriptor. 
Although in this rare case I would apply the staticmethod decorator 
after using the function in the class body.

class Spam:
     # @staticmethod
     def utility(arg):
         ...

     value = utility(arg)
     utility = staticmethod(utility)

But I don't see a use case for calling the classmethod descriptor.



More information about the Python-ideas mailing list