Why does assigning to self not work, and how to work around the issue?
I have a class (list of dict s) and I want it to sort itself: class Table(list): … def sort (self, in_col_name): self = Table(sorted(self, key=lambda x: x[in_col_name])) but it doesn't work at all. Why? How to avoid it? Except for sorting it externally, like: new_table = Table(sorted(old_table, key=lambda x: x['col_name']) Isn't it possible to manipulate the object itself? It's more meaningful to have: class Table(list): pass than: class Table(object): l = [] … def sort (self, in_col_name): self.l = sorted(self.l, key=lambda x: x[in_col_name]) which, I think, works. And in general, isn't there