Totally agree with this.  I think both of points should be clarified in the 
documentation: https://docs.python.org/3/library/functions.html#staticmethod

Namely that:
* Nearly all uses of static methods should instead be class methods, and
* The main exception is setting an ordinary function as a class attribute 
without making it a method.

Best,

Neil
On Sunday, December 19, 2021 at 3:07:38 PM UTC-5 Serhiy Storchaka wrote:

> 19.12.21 19:41, Ethan Furman пише:
> > On 12/19/21 5:40 AM, Serhiy Storchaka wrote:
> > 
> >> classmethod supersedes staticmethod. It was not clearly known when they
> >> were introduced, but now we see that there is very few use cases for
> >> staticmethod which cannot be replaced by classmethod (actually only one
> >> specific case).
> > 
> > What is the one case?
>
> Setting a Python function as a class attribute without making it a method.
>
> def func(*args, **kwargs): ...
> class A:
> f = staticmethod(func)
> a = A()
> a.f(1) # calls func(1), not func(a, 1)
>
> It is used in tests if there are C and Python implementations.
> staticmethod(func) could be replaced with
>
> lambda self, /, *args, **kwargs: func(*args, **kwargs)
>
> or
>
> property(lambda self: func)
>
> in these cases.
>
> _______________________________________________
> Python-ideas mailing list -- python...@python.org
> To unsubscribe send an email to python-id...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python...@python.org/message/J7GEEWCKIXWXOEQ4KD3ZFPA5W73ZAWVK/
>  
> <https://mail.python.org/archives/list/python-ideas@python.org/message/J7GEEWCKIXWXOEQ4KD3ZFPA5W73ZAWVK/>
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/3PL4NXPEN6NWWZWECDEGDIDGKO4BNB74/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to