捕获变量中__repr__函数的输出

时间:2017-04-11 05:09:33

标签: python

我有以下代码库:

+=

现在,sortdates函数的主要功能是根据日期对Person对象进行排序。为此我需要将Person对象的字符串表示转换为datetime对象。

此外,由于我必须这样做,我必须以某种方式将字符串表示捕获到变量中并将其传递给datetime.strptime函数。

有人可以指导我如何做到这一点吗?

提前致谢。

1 个答案:

答案 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])