'Constructor.
Arguments:
hour, minute (required)
second, microsecond (default to zero)
tzinfo (default to None)'

def __new__(cls, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):

    self = object.__new__(cls)
    if (isinstance(hour, bytes) and (len(hour) == 6)):
        self.__setstate(hour, (minute or None))
        return self
    _check_tzinfo_arg(tzinfo)
    _check_time_fields(hour, minute, second, microsecond)
    self._hour = hour
    self._minute = minute
    self._second = second
    self._microsecond = microsecond
    self._tzinfo = tzinfo
    return self
