在python中将自定义类转换为dict

时间:2013-01-21 04:26:18

标签: python

也许我忽略了一些简单的东西,但是我想在python中将一个自定义类的实例转换为字典(为了便于阅读),但是还没有得到如何说明。为了解释伪代码,我希望能够做到这一点:

class A:
   # class things...

a = A()
b = dict(a)

我在b内定义了A的内容。这可能吗?

2 个答案:

答案 0 :(得分:5)

如果你定义__iter__,那就是Just Work(tm):

class A(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __iter__(self):
        return vars(self).iteritems()

给出

>>> A(2,3)
<__main__.A object at 0x101ea70d0>
>>> dict(A(2,3))
{'a': 2, 'b': 3}

你可以回报或屈服你喜欢的任何东西。也就是说,我在评论中提出的建议是,你应该真正实现一个.to_dict()方法,因为__iter__通常对其他目的来说太浪费了。

答案 1 :(得分:0)

我认为,您可以使用这样的导入集合


class B(collections.MutableMapping):

   def __init__(self, *args, **kwargs):
        self.b = dict()

   def __iter__(self):
      return iter(self.b)

    def keys(self):
      return self.b.keys()

    def items(self):
      return self.b.items()

    def values(self):
      return self.b.values()

或其他建议How to implement own custom dict class in python