【问题标题】:How to check if one class instance is greater than the other one? [duplicate]如何检查一个类实例是否大于另一个? [复制]
【发布时间】:2020-08-04 16:09:10
【问题描述】:

我已经上课了。现在我想定义一个函数来显示一个时间是否大于另一个。我已经把我的代码写到了这个级别:

class Time:

    def __init__(self,Hour_value=0,Minute_value=0,Secound_value=0):
        self.Hour = Hour_value
        self.Minute = Minute_value
        self.Secound = Secound_value

    def __repr__(self):  
        return str(self.Hour)  + ":" + str(self.Minute) + ":" + str(self.Secound)

剩下的我该怎么办? 这个任务有内置函数吗?

【问题讨论】:

  • 为了能够使用>,你需要在你的Time类上实现__gt__
  • 如果你愿意,你需要写实际的comparison methods> 上班。

标签: python function class


【解决方案1】:

您应该使用__lt__ 方法:

class Time:
    def __init__(self, Hour_value=0, Minute_value=0, Secound_value=0):
        self.Hour = Hour_value
        self.Minute = Minute_value
        self.Secound = Secound_value
    def __lt__(self, other):
        return (self.Hour, self.Minute, self.Secound) < (other.Hour, other.Minute, other.Secound)

现在你可以这样做了:

times = [Time(3,4,5), Time(5,2,3), Time(3,4,7)]
sorted(times)

一般来说,你可以比较两个Time对象:

if Time(1,2,3) < Time(0,4,5):
    ...

__lt__ 代表“低于”。您还可以实现__le__(“小于等于”)、__eq__(“等于”)、__ne__(“不等于”)、__gt__(“大于”)和__ge__(“大于”)或等于”)。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多