
It would create an exception of two rules:
I don't think these are "rules", I think they're just "the way things are". If I'm subclassing `dict`, and I see in the docs something to the effect of:
By default, `dict` subclasses will return `dict` objects for `|` operations. To force the creation of a new instance of the subclass, users can override the `copy` method. In that case, the return value from this method will be used instead.
Then my life suddenly becomes a lot better, because chances are I've already thought to override `copy`. And if I want the "legacy" behavior, it's as simple as not bothering with "copy" (or, if I need to, overriding the `__or__` trio)... but I'm sure this is the less common case. If we're quoting the Zen, then let's not elevate past design patterns to "rules". Besides, practicality beats purity. ;)