[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