def __init__(self, address):
<EOL>if isinstance(address, _compat_int_types):<EOL><INDENT>self._check_int_address(address)<EOL>self._ip = address<EOL>return<EOL><DEDENT>if isinstance(address, bytes):<EOL><INDENT>self._check_packed_address(address, <NUM_LIT:16>)<EOL>bvs = _compat_bytes_to_byte_vals(address)<EOL>self._ip = _compat_int_from_byte_vals(bvs, '<STR_LIT>')<EOL>return<EOL><DEDENT>addr_str = _compat_str(address)<EOL>if '<STR_LIT:/>' in addr_str:<EOL><INDENT>raise AddressValueError("<STR_LIT>" % address)<EOL><DEDENT>self._ip = self._ip_int_from_string(addr_str)<EOL>
Instantiate a new IPv6 address object.

        Args:
            address: A string or integer representing the IP

              Additionally, an integer can be passed, so
              IPv6Address('2001:db8::') ==
                IPv6Address(42540766411282592856903984951653826560)
              or, more generally
              IPv6Address(int(IPv6Address('2001:db8::'))) ==
                IPv6Address('2001:db8::')

        Raises:
            AddressValueError: If address isn't a valid IPv6 address.