MST

星途 面试题库

面试题:Python中自定义类的比较运算符重载及应用场景

定义一个 `Book` 类,有 `title`(书名)和 `price`(价格)两个属性。重载比较运算符 `>`、`<` 和 `==`,使得可以按照价格对 `Book` 实例进行比较。并且说明在实际项目开发中,这种比较运算符重载在哪些场景下会很有用,例如在排序、筛选等场景中如何体现其优势。
20.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
class Book:
    def __init__(self, title, price):
        self.title = title
        self.price = price

    def __gt__(self, other):
        return self.price > other.price

    def __lt__(self, other):
        return self.price < other.price

    def __eq__(self, other):
        return self.price == other.price

在实际项目开发中:

  • 排序场景
    • 当需要对一个包含多个 Book 实例的列表进行排序时,使用内置的 sorted() 函数或者列表的 sort() 方法,由于重载了比较运算符,就可以直接按照价格对书籍进行升序或降序排序。例如:
books = [Book('Python 入门', 50), Book('数据结构', 80), Book('算法导论', 100)]
sorted_books = sorted(books)  # 按照价格升序排序
- 这种方式使得代码简洁明了,无需额外编写复杂的比较函数。
  • 筛选场景
    • 在进行数据筛选时,例如从一个包含众多书籍的列表中筛选出价格高于某一特定值的书籍。由于重载了比较运算符,可以直接使用简单的条件判断。例如:
books = [Book('Python 入门', 50), Book('数据结构', 80), Book('算法导论', 100)]
expensive_books = [book for book in books if book > Book('', 80)]
- 这样可以很方便地根据价格条件筛选出符合要求的书籍,提高了代码的可读性和开发效率。