datetime objects and __new__()
peter
peter.sabaini at gmail.com
Tue Nov 25 10:09:57 EST 2008
On Nov 25, 3:46 pm, Peter Otten <__pete... at web.de> 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
More information about the Python-list
mailing list