Regarding several other answers, this doesn’t have anything to do with dates being implemented in C per se. The __init__
method does nothing because they are immutable objects, therefore the constructor (__new__
) should do all the work. You would see the same behavior subclassing int, str, etc.
>>> import datetime
>>> class D(datetime.date):
def __new__(cls, year):
return datetime.date.__new__(cls, year, 1, 1)
>>> D(2008)
D(2008, 1, 1)