[python] Rozsireni datetime

Radek Kanovsky rk na dat.cz
Pátek Duben 24 07:58:10 CEST 2009


On Wed, Apr 22, 2009 at 08:05:59AM +0200, mtip wrote:

> Zdravim vsechny,
> 
> zkousel jsem rozsirit datetime v modulu datetime a narazil jsem na
> problem, ze nemohu prekryt metodu __init__. datetime se inicializuje
> driv nez moje metoda __init__ a jeste selze na chybnych parametrech.
> Nevite nekdo, jak toho dosahnout ?
> 
> Predem dik za odpovedi.

Metoda __init__ u datetime nedela nic. Vse se udela v metode __new__,
coz plati pro vetsinu trid implementovanych v C. Je teda potreba
prepsat __new__. Asi nejak takhle:

    import datetime

    class mydatetime(datetime.datetime):
        
        def __new__(klass, *args):
            if not args:
                return datetime.datetime.now()
            self = datetime.datetime.__new__(klass, *args)
            return self

    if __name__ == '__main__':
        t = mydatetime()
        print t
        t = mydatetime(2000, 1, 12, 12, 44, 51)
        print t


Radek Kaňovský, Dat, s.r.o.


Další informace o konferenci Python