Created
April 10, 2018 11:44
-
-
Save gaoconghui/eb58bbc2fe9bde8616351ab42c200a8e to your computer and use it in GitHub Desktop.
小的辅助类,提供一个能把复杂对象转为dict的方法
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -* | |
""" | |
把一个复杂对象转为一个字典 | |
""" | |
class ToDictMixin(object): | |
def to_dict(self): | |
return self._traverse_dict(self.__dict__) | |
def _traverse_dict(self, instance_dict): | |
pass | |
def _traverse(self, key, value): | |
if isinstance(value, ToDictMixin): | |
return value.to_dict() | |
elif isinstance(value, dict): | |
return self._traverse_dict(value) | |
elif isinstance(value, list): | |
return [self._traverse(key, i) for i in value] | |
elif hasattr(value, '__dict__'): | |
return self._traverse_dict(value.__dict__) | |
else: | |
return value |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment