[Python-Dev] PEP 443 - Single-dispatch generic functions (including ABC support) (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Wed May 29 08:08:14 CEST 2013


On Wed, 29 May 2013 12:40:32 +1000 Nick Coghlan <ncoghlan at gmail.com> wrote:

On Wed, May 29, 2013 at 5:41 AM, Russell E. Owen <rowen at uw.edu> wrote: > In article <C9841B1F-80F3-4E77-83E6-F71859524BC8 at langa.pl>, > Ɓukasz Langa <lukasz at langa.pl> wrote: > >> Hello, >> Since the initial version, several minor changes have been made to the >> PEP. The history is visible on hg.python.org. The most important >> change in this version is that I introduced ABC support and completed >> a reference implementation. >> >> No open issues remain from my point of view. > > Is it true that this cannot be used for instance and class methods? It > dispatches based on the first argument, which is "self" for instance > methods, whereas the second argument would almost certainly be the > argument one would want to use for conditional dispatch.

Correct. OO and generic functions are different development paradigms, and there are limitations on mixing them. Generic functions are for stateless algorithms, which expect to receive all required input through their arguments. By contrast, class and instance methods expect to receive some state implicitly - in many respects, they already are generic functions.

There are actual use cases for generic methods, think pickle.py.

(also, often a "stateless" function will eventually become stateful, if used as part of a sufficiently complex application / library; e.g. some logging will be added, or some kind of configuration object)

Regards

Antoine.



More information about the Python-Dev mailing list