我有以下代码库:
+=
现在,sortdates函数的主要功能是根据日期对Person对象进行排序。为此我需要将Person对象的字符串表示转换为datetime对象。
此外,由于我必须这样做,我必须以某种方式将字符串表示捕获到变量中并将其传递给datetime.strptime函数。
有人可以指导我如何做到这一点吗?
提前致谢。
答案 0 :(得分:1)
执行此操作的正确方法是为__lt__
对象定义__gt__
,__eq__
,Person
方法;通过这种方式,您的Person对象变为"可排序"独自一人。
class Person:
def __init__(self,day,month,year):
self.day = day
self.mon = month
self.year = year
def _as_date(self):
return datetime.date(self.year, self.mon, self.day)
def __lt__(self, other):
return self._as_date() < other._as_date()
def __gt__(self, other):
return self._as_date() > other._as_date()
def __eq__(self, other):
return self._as_date() == other._as_date()
def __ne__(self, other):
return ! self.__eq__(other)
def __repr__(self):
return '{}-{}-{}'.format(str(self.day).zfill(2),
str(self.mon).zfill(2),
self.year)
现在,您可以直接对对象进行排序:
if __name__ == '__main__':
p1 = Person(18,9,1984)
print (p1)
p2 = Person(13,1,1988)
print (p2)
sorted_dates = sorted([p1,p2])