Dear Tutors,
A class was created to extend timedelta to add and subtract months. Simple doctests that simply create an instance of the class failed. Could someone please explain this really funny behaviour.
timedelta is an immutable class (its instances have fixed values that can't be changed). When you subclass an immutable class you have to override __new__ instead of __init__. See this link for details and examples:
http://www.python.org/2.2.3/descrintro.html#__new__
Kent
Regards, Jacob Abraham
from datetime import datetime, timedelta
class WeirdTimeDelta(timedelta): """Allows addition and subtraction of months.
Variables are getting passed to the timedelta constructor ??
>>> delta = WeirdTimeDelta(5) >>> delta.days 0
Should'nt this work ???
>>> delta = WeirdTimeDelta(months=5)
"""
def __init__(self, months=0, *vals, **kwds): """Constructs a weird time delta.""" super(WeirdTimeDelta, self).__init__(*vals, **kwds) self.months = months
if __name__ == "__main__": import doctest doctest.testmod()
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor