matilda matilda wrote: > Hi all, > > I searched for a while, but didn't found answer to my question. > > I wrote the following little program: > ==================================== > #!/usr/bin/python > import datetime as dt > class MyClass(dt.date): > def __init__(self, *args, **kwargs): > super(MyClass, self).__init__(*args, **kwargs) > > def addday(self, day=0): > my = self + dt.timedelta(day) > return my > > def getfirstofmonth(self): > return self.replace(day=1) > > > if __name__ == '__main__': > my = MyClass(2006,10,1) > print "Type before", type(my) > my = my.getfirstofmonth() > print "Type after", type(my) > my = my.addday(2) > print "Type after add", type(my) > ==================================== > > What I don't understand is, why the type of the returning object > 'my' changes by executing my.addday(2). > Why does addday return the datetime.date-object and not > an object of class MyClass? > What am I missing?
You did not override __add__(). I'm almost certain that the implementation of datetime.date.__add__ creates a new datetime.date object explicitly rather than using self.__class__ to figure out what it should construct. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list