This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author lisroach
Recipients Mikołaj Babiak, lisroach, ncoghlan, r.david.murray, rhettinger
Date 2017-09-27.04:44:49
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1506487489.96.0.154975027568.issue31145@psf.upfronthosting.co.za>
In-reply-to
Content
I think it is a good idea to have a simple way to add a value to sort on in general, it could have some interesting use-cases. Also I am with Nick a name change would make the broader scope clearer.

What I am not sure about is making the comparison have to be between two items of the same wrapper type - since right now we are comparing priority to priority attributes. 

It makes sense for PriorityQueues, but if we wanted to use this for something more arbitrary like comparing a string with an int priority to an int we end up having to convert both data types to the new wrapper type:

  str_cmp = KeyedItem(20, 'cat')
  int_cmp  = KeyedItem(30, 30)
  str_cmp < int_cmp


I don't like having to convert to the new wrapper unless it's relevant, I'd rather do:

  str_cmp = KeyedItem(20, 'cat')
  str_cmp < 30


It could be instead:

 class KeyedItem:
    def __init__(self, key, item):
         self.key = key
         self.item = item
     def __eq__(self, other):
         if not isinstance(other, KeyedItem):
             return self.key == other
         return self.key == other.key
            
     def __lt__(self, other):
	if not isinstance(other, KeyedItem):
            return self.key < other
        return self.key < other.key
     ...
History
Date User Action Args
2017-09-27 04:44:50lisroachsetrecipients: + lisroach, rhettinger, ncoghlan, r.david.murray, Mikołaj Babiak
2017-09-27 04:44:49lisroachsetmessageid: <1506487489.96.0.154975027568.issue31145@psf.upfronthosting.co.za>
2017-09-27 04:44:49lisroachlinkissue31145 messages
2017-09-27 04:44:49lisroachcreate