Probleme mit datetime ableitung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
damiro
User
Beiträge: 4
Registriert: Freitag 27. Januar 2006, 12:03

Probleme mit datetime ableitung

Beitragvon damiro » Mittwoch 10. Januar 2007, 14:37

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()
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 10. Januar 2007, 15:50

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)
BlackJack

Beitragvon BlackJack » Mittwoch 10. Januar 2007, 16:04

Ist keine wirkliche Lösung. `datetime.datetime` erwartet das man `__new__()` überschreibt.
Benutzeravatar
Luzandro
User
Beiträge: 87
Registriert: Freitag 21. April 2006, 17:03

Beitragvon Luzandro » Mittwoch 10. Januar 2007, 16:18

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()

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]