On Nov 25, 3:46 pm, Peter Otten <[EMAIL PROTECTED]> wrote: > peter wrote: > >>>> import datetime > >>>> class ts(datetime.datetime): > > ... foo = 'bar' > > ... def __new__(cls, s): > > ... c = super(ts, cls) > > ... return c.fromtimestamp(s) > > ... > >>>> t = ts(0) > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > File "<stdin>", line 5, in __new__ > > TypeError: __new__() takes exactly 2 arguments (9 given) > > > I don't understand why that happens -- am I correct in assuming that > > the call to .fromtimestamp() is picking up on the ts class? Shouldn't > > it get the datetime class instead? > > > (Yes, I am aware of the problems of using datetime and timestamps) > > > Could some kind soul please enlighten me? > > If the datetime class were implemented in Python the fromtimestamp() method > could look like: > > @classmethod > def fromtimestamp(cls, s): > year, month, day,... = ... > return cls(year, month, day,...) > > This will fail since you modified the constructor to accept only a single > argument.
Hm, I had hoped that using super() would result in calling the constructor of the superclass, ie. datetime. Did I use super() wrong? Thanks, peter. > Peter -- http://mail.python.org/mailman/listinfo/python-list