As long ago as Python 3.0, there was talk about deprecating
unbound super objects, which aren’t documented very well, and are often confusing. Many people assume that if bound super objects dispatch to bound methods:
super(T, obj).method # returns method bound to obj
then obviously unbound super objects must dispatch to unbound methods:
super(T).method # returns unbound method
(I know that’s what I assumed) but that’s not the case.
Michele Simionato suggested that (1) there’s only a single use-case for unbound super objects, and (2) they don’t even work correctly for that use-case.
Now that we have the zero-argument form of super(), does that remove the motivation for unbound super objects? Should they be deprecated in 3.9 for removal in 3.10?
Or keep them and document them better?