'Return a new date with new values for the specified fields.'

def replace(self, year=None, month=None, day=None):

    if (year is None):
        year = self._year
    if (month is None):
        month = self._month
    if (day is None):
        day = self._day
    _check_date_fields(year, month, day)
    return date(year, month, day)
