datetime objects and __new__()
Peter Otten
__peter__ at web.de
Tue Nov 25 09:46:57 EST 2008
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.
Peter
More information about the Python-list
mailing list