On 22.10.2015 03:11, Terry Reedy wrote:
On 10/21/2015 1:41 PM, Sven R. Kunze wrote:
The "superclass" is not "massive" at all. It is even slimmer as
orthogonal aspects are refactored out into separate entities. In fact,
it makes it even easier to test and maintain these separate aspects (the
core dev should be interested in that). Furthermore, it's, of course, up
to debate which aspects should be injectable and which are not.

The dict class itself is, in a sense, a poor example for this discussion.  It is a critical part of Python's infrastructure, involved in a large fraction of executed statements.  It therefore needs to be as fast as possible.  For CPython, this means a heavily optimized C implementation that disallows injection and that takes shortcuts like bypassing method lookups.  This makes the usefulness of subclassing limited.

The discussion is about dict:

normal_dict = dict()
ordered_dict = dict(order=dict.order_by_insert)
sorted_dict = dict(order=sorted)
sorted_default_dict = dict(order=sorted, default=int)

Why couldn't dict() or {} redirect to the super-fast built-in C-implementation whereas dict(order=sorted, default=int) redirects to some more feature rich one?

As you see, I for one don't see a contradiction between performance and features.

Best,
Sven