Seite 1 von 1

Probleme mit datetime ableitung

Verfasst: Mittwoch 10. Januar 2007, 14:37
von damiro
Hallo,

kann mir jemand sagen, warum ich auf diese Weise nicht problemlos von datetime.datetime ableiten kann? Der Interpreter hat immer was an den Parametern (wo bei ich gar keine erwarte) zu meckern.

Code: Alles auswählen

import datetime

class mydt(datetime.datetime):
    def __init__(self):
        datetime.__init__(self, 2007, 1, 10)

x = mydt()

Verfasst: Mittwoch 10. Januar 2007, 15:50
von sape

Code: Alles auswählen

from datetime import datetime

class mydt(datetime):
    def __init__(self, *args, **kwargs):
        datetime.__init__(self,*args, **kwargs)

x = mydt(2007, 1, 10) 

Verfasst: Mittwoch 10. Januar 2007, 16:04
von BlackJack
Ist keine wirkliche Lösung. `datetime.datetime` erwartet das man `__new__()` überschreibt.

Verfasst: Mittwoch 10. Januar 2007, 16:18
von Luzandro
sape hat geschrieben:

Code: Alles auswählen

from datetime import datetime

class mydt(datetime):
    def __init__(self, *args, **kwargs):
        datetime.__init__(self,*args, **kwargs)

x = mydt(2007, 1, 10) 
Abgesehen davon, dass das ja nicht tut was damiro wollte, passiert in dem __init__ auch nichts - wenn du vor das datetime.__init__ ein "print self" setzt, siehst du, dass das Objekt zu der Zeit schon mit den entspr. Werten erzeugt wurde.
So wie ich das verstanden habe, muss man alle immutable Objekte schon bei der Erzeugung mit __new__ initialisieren, da man sie ja danach auch in __init__ nicht mehr ändern kann

Code: Alles auswählen

class mydt(datetime):
    def __new__(cls):
        return datetime.__new__(cls, 2007, 1, 10)

x = mydt()