Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6614609
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T20:21:34+00:00 2026-05-25T20:21:34+00:00

I have multiple subclasses of a superclass that store something in a instance_of_a_class.value and

  • 0

I have multiple subclasses of a superclass that store something in a instance_of_a_class.value and I override __cmp__() to provide reasonable ==, <, > etc. comparisons.

However, I have multiple places in my code where I do

min(list_of_instances_of_class, key=lambda _: _.value) or max(list_of_instances_of_class, key=lambda _: _.value) and an occasional sorted(...

Is there a function to override in the class so that I don’t have to specify the key function for each call to the said functions or do I need to subclass list and override the max, min and sorted methods?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T20:21:35+00:00Added an answer on May 25, 2026 at 8:21 pm

    Just implement __lt__:

    class Obj(object):
        def __init__(self, value):
            self.value = value
        def __lt__(self, other):
            return self.value < other.value
        def __repr__(self):
            return 'Obj(%r)' % self.value
    
    obj_list = [Obj(2), Obj(1), Obj(4), Obj(3)]
    
    print max(obj_list)
    print min(obj_list)
    print sorted(obj_list)
    

    __cmp__ is deprecated, and all of the functions that you mentioned use only __lt__ not the other comparisons.

    If for some reason you really can’t have them compare this way, you can do something like:

    from operator import attrgetter
    from functools import partial
    
    valget = attrgetter('value')
    
    maxval = partial(max, key=valget)
    minval = partial(max, key=valget)
    sortedval = partial(sorted, key=valget)
    sortval = partial(list.sort, key=valget)
    

    Where you call them just as maxval(obj_list) instead of max(obj_list) etc., and sortval(obj_list) to sort in-place instead of obj_list.sort()

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a base class with a virtual method, and multiple subclasses that override
I have a superclass of type Question which has multiple subclasses (e.g. MultipleChoiceQuestion and
I have multiple classes (B, C and D) that are subclasses of class A.
I have multiple selects: <select id=one> <option value=1>one</option> <option value=2>two</option> <option value=3>three</option> </select> <select
I have multiple classes that all derive from a base class, now some of
I have multiple threads (C# application running on IIS) running that all need to
I have multiple logos of various companies in various formats that needs to be
In my model I have an abstract User class, and multiple subclasses such as
In a Java program, I have multiple subclasses inheriting from a parent (which is
I have multiple classes (controllers) that share a huge chunk of code with each

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.