I'm posting this, but @jasonharper provided the answer. The solution to my problem was to subclass collections.UserList rather than list. All of its methods generate objects of the same class. Works perfectly.
collections.UserList
list