【问题标题】:Python: Using a method to compare two instances of the same dataclassPython:使用一种方法比较同一数据类的两个实例
【发布时间】:2023-02-06 02:58:47
【问题描述】:

再会。只是一个简单的问题: 在我的演讲过程中,我最近被赋予了这个任务:

姓名由姓氏 (surname) 和名字 (prename) 组成。姓名通常主要按姓氏排序,只有当姓氏相同时,才按名字排序。 定义一个对应的数据类Name,它有一个神奇的__lt__方法,主要通过surname比较两个Name

我不确定我应该如何执行此任务,因为我不知道如何比较同一类的两个实例 - 因为没有给我任何两个对象进行比较,也没有指示我编写一个函数来比较两个对象与Name 类,或子类。上面的任务是我必须完成的全部工作——我什至没有被告知该方法是否应该以某种方式对它们进行排序。

反过来,我不确定应该如何定义该方法。你知道我应该在这里做什么吗?

【问题讨论】:

  • 如果你不明白你的讲师说的话,你应该问你的讲师。不要试图猜测他们说了什么并将您的猜测发布到网上,然后邀请其他人进行第三方猜测。问你的讲师,那是他们的工作。

标签: python python-3.x class methods


【解决方案1】:

该任务要求您在Name 数据类中定义一个自定义比较方法__lt__(小于),它允许您根据姓氏和名字比较 Name 类的两个实例。

下面是一个示例,说明如何在 Python 中使用 __lt__ 方法定义 Name 类:

红宝石

class Name:
    def __init__(self, surname, first_name):
        self.surname = surname
        self.first_name = first_name

    def __lt__(self, other):
        if self.surname == other.surname:
            return self.first_name < other.first_name
        return self.surname < other.surname

通过此实现,您可以使用 &lt; 运算符比较 Name 类的两个实例,它将主要按姓氏对它们进行排序,如果姓氏相同,则其次按名字排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多