def GetDataAsObject(self):
if not self._data:<EOL><INDENT>return None<EOL><DEDENT>if self._data_type in self._STRING_VALUE_TYPES:<EOL><INDENT>try:<EOL><INDENT>return self._data.decode('<STR_LIT>')<EOL><DEDENT>except AttributeError as exception:<EOL><INDENT>raise errors.WinRegistryValueError((<EOL>'<STR_LIT>'<EOL>'<STR_LIT>').format(type(self._data), self._name, exception))<EOL><DEDENT>except UnicodeError as exception:<EOL><INDENT>raise errors.WinRegistryValueError(<EOL>'<STR_LIT>'.format(<EOL>self._name, exception))<EOL><DEDENT><DEDENT>elif (self._data_type == definitions.REG_DWORD and<EOL>self._data_size == <NUM_LIT:4>):<EOL><INDENT>return self._INT32_LITTLE_ENDIAN.MapByteStream(self._data)<EOL><DEDENT>elif (self._data_type == definitions.REG_DWORD_BIG_ENDIAN and<EOL>self._data_size == <NUM_LIT:4>):<EOL><INDENT>return self._INT32_BIG_ENDIAN.MapByteStream(self._data)<EOL><DEDENT>elif (self._data_type == definitions.REG_QWORD and<EOL>self._data_size == <NUM_LIT:8>):<EOL><INDENT>return self._INT64_LITTLE_ENDIAN.MapByteStream(self._data)<EOL><DEDENT>elif self._data_type == definitions.REG_MULTI_SZ:<EOL><INDENT>try:<EOL><INDENT>utf16_string = self._data.decode('<STR_LIT>')<EOL>return list(filter(None, utf16_string.split('<STR_LIT:\x00>')))<EOL><DEDENT>except AttributeError as exception:<EOL><INDENT>raise errors.WinRegistryValueError((<EOL>'<STR_LIT>'<EOL>'<STR_LIT>').format(type(self._data), self._name, exception))<EOL><DEDENT>except UnicodeError as exception:<EOL><INDENT>raise errors.WinRegistryValueError(<EOL>'<STR_LIT>'.format(<EOL>self._name, exception))<EOL><DEDENT><DEDENT>return self._data<EOL>
Retrieves the data as an object.

        Returns:
          object: data as a Python type or None if not available.

        Raises:
          WinRegistryValueError: if the value data cannot be read.