<div dir="ltr"><div>I'm +1 on this idea for the most part.<br><br>I agree particularly with the idea that it is better OOP for an object to access it's member variables to create the key than an external container to do so.<br><br>> and then sort like this:<br>> sorted(list_of_attrdicts, key=AttrDict._id_order)<br><br>This is certainly a good pattern to use in the current and older versions, but I think we can all agree that defining __key__ and calling "sorted(list_of_attrdicts)" has that syntactic sugar that is oh-so-sweet-and-tasty.<br><br>> This will add an additional overhead. This will be even slower than passing the key function, since you will need to look up the __key__ method in every item. And there will be an overhead even in the case when the __key__ method is not defined.<br><br>This, to me, is the only possible negative.  I would be most interested to see how much of an effect this would have on real-world data that doesn't have __key__ defined.<br><br><br><br>I may be new to this community but Steven D'Aprano and Antoine Pitrou, you guys bicker like my parents before they got a divorce.  I'm pretty sure you're both veterans and so know how to behave yourselves.  Please set the tone according to how you'd like us newbies to respond.<br><br></div>-Brent<br></div>