对一个对象进行编码 :param value: :return:
(self, value)
| 305 | return result |
| 306 | |
| 307 | def _encode_object(self, value): |
| 308 | """ |
| 309 | 对一个对象进行编码 |
| 310 | :param value: |
| 311 | :return: |
| 312 | """ |
| 313 | result = [] |
| 314 | path = value.get_path() |
| 315 | field_names = value.keys() |
| 316 | |
| 317 | if path not in self.__classes: |
| 318 | result.append(ord('C')) |
| 319 | result.extend(self._encode_single_value(path)) |
| 320 | |
| 321 | result.extend(self._encode_single_value(len(field_names))) |
| 322 | |
| 323 | for field_name in field_names: |
| 324 | result.extend(self._encode_single_value(field_name)) |
| 325 | self.__classes.append(path) |
| 326 | class_id = self.__classes.index(path) |
| 327 | if class_id <= 0xf: |
| 328 | class_id += 0x60 |
| 329 | class_id &= 0xff |
| 330 | result.append(class_id) |
| 331 | else: |
| 332 | result.append(ord('O')) |
| 333 | result.extend(self._encode_single_value(class_id)) |
| 334 | for field_name in field_names: |
| 335 | result.extend(self._encode_single_value(value[field_name])) |
| 336 | return result |
| 337 | |
| 338 | def _encode_list(self, value): |
| 339 | """ |
no test coverage detected