多步比较测试 python
multistep comparison test python
我想实现一个 class 重载,如果给定时间点的事件例如 12:59:50 发生在另一个事件之前,那么输出是真还是假,这只是一个简单的比较测试.如您所见,我实现了它,但是,我非常确定这不是最 pythonic 或更好地说,面向对象的执行任务的方法。我是 python 的新手,有什么改进吗?
谢谢
def __lt__(self, other):
if self.hour < other.hour:
return True
elif (self.hour == other.hour) and (self.minute < other.minute):
return True
elif (self.hour == other.hour) and (self.minute == other.minute) and (self.second < other.second):
return True
else:
return False
元组(和其他序列)已经执行了您正在实施的词典比较类型:
def __lt__(self, other):
return (self.hour, self.minute, self.second) < (other.hour, other.minute, other.second)
operator
模块可以稍微清理一下:
from operator import attrgetter
def __lt__(self, other):
hms = attrgetter("hour", "minute", "second")
return hms(self) < hms(other)
我想实现一个 class 重载,如果给定时间点的事件例如 12:59:50 发生在另一个事件之前,那么输出是真还是假,这只是一个简单的比较测试.如您所见,我实现了它,但是,我非常确定这不是最 pythonic 或更好地说,面向对象的执行任务的方法。我是 python 的新手,有什么改进吗?
谢谢
def __lt__(self, other):
if self.hour < other.hour:
return True
elif (self.hour == other.hour) and (self.minute < other.minute):
return True
elif (self.hour == other.hour) and (self.minute == other.minute) and (self.second < other.second):
return True
else:
return False
元组(和其他序列)已经执行了您正在实施的词典比较类型:
def __lt__(self, other):
return (self.hour, self.minute, self.second) < (other.hour, other.minute, other.second)
operator
模块可以稍微清理一下:
from operator import attrgetter
def __lt__(self, other):
hms = attrgetter("hour", "minute", "second")
return hms(self) < hms(other)