inheritance - Inherit from Python's and override __str__ -
i interested in doing similar django doing lists, e.g:
in django shell
in [4]: timeportal.models import rules in [5]: rules.objects.all() out[5]: [<rules: day_limit>] i tried doing following:
class timeentrylist(list): def __str__(self): return ';'.join([str(i) in self.__getslice__(0, self.__len__())]) which seems work in normal python shell:
in [54]: a=timeentrylist(('1-2','2-3')) in [58]: print 1-2;2-3 in [59]: str(a) out[59]: '1-2;2-3' however in application timeentrylist instance list of timeentry objects defined this:
class timeentry(object): def __init__(self, start, end): self.start = start self.end = end #self.duration = (self.end - self.start).seconds / 3600.0 @property def duration(self): return (self.end - self.start).seconds / 3600.0 @duration.setter def duration(self, value): self._duration = value def __str__(self): return '{} - {} '.format(dt.strftime(self.start, '%h:%m'), dt.strftime(self.end, '%h:%m'),) when printing single entry ok:
>>> print checker.entries[0] 08:30 - 11:00 when try slicing, results different:
>>>print self.entries[0:2] [<timeportal.semantikcheckers.timeentry object @ 0x93c7a6c>, <timeportal.semantikcheckers.timeentry object @ 0x93d2a4c>] my question is:
how inherit list, , define __str__ print slices works following output when issuing print self.entries[0:2]:
['08:30 - 11:00 ', '11:00 - 12:30 '] i know gives desired out:
[str(i) in self.entries[:2]] however purpose here learning new technique , not working know.
you need override __repr__ of timeentry (instead of changing list implementation). can find explanation difference between __repr__ , __str__ here:
Comments
Post a Comment