Skip to content

Instantly share code, notes, and snippets.

@gaoconghui
Created April 10, 2018 11:44
Show Gist options
  • Save gaoconghui/eb58bbc2fe9bde8616351ab42c200a8e to your computer and use it in GitHub Desktop.
Save gaoconghui/eb58bbc2fe9bde8616351ab42c200a8e to your computer and use it in GitHub Desktop.
小的辅助类,提供一个能把复杂对象转为dict的方法
# -*- 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