In Python lists, there are two alternative ways of performing a list sort:

1. Using its `.sort` method, which sorts in place
2. Using the `sorted()` built-in function, which returns a new sorted list

Now, if I create a custom container type (say by subclassing from `itertools`'s ABC), can I do the same?

I can figure out how to make the custom container object sorts in place. But what I want is for the built-in `sort()` to return a new instance of that custom container object (instead of a list) when I use it.

Is this possible? If so, how?