[Python-ideas] staticmethod and classmethod should be callable

Jeroen Demeyer J.Demeyer at UGent.be
Thu Jun 21 05:08:10 EDT 2018


On 2018-06-21 11:00, INADA Naoki wrote:
> When Python 4, I think we can even throw away classmethod and
> staticmethod object.
> PyFunction can have binding flag instead, like METH_CLASS and
> METH_STATIC for PyCFunction.
> classmethod and staticmethod is just a function which modify the flag.

One issue with that idea is that staticmethod, classmethod can actually 
arbitrary objects, not only Python functions. In fact, even this object 
can be created:

 >>> staticmethod(42)
<staticmethod object at 0x7f74ab9c55f8>

So in that sense, they behave more like "method" which can also wrap 
arbitrary callables (in this case, callability is checked). So I'm 
vaguely thinking of putting "method", "staticmethod" and "classmethod" 
on top of a common base class for things wrapping callables.


Jeroen.


More information about the Python-ideas mailing list