0

也许我忽略了一些简单的事情,但我想将自定义类的实例转换为 python 中的字典(为了便于阅读),但不知道如何做。用伪代码解释,我希望能够做到这一点:

A类:
   # 类的东西...

a = A()
b = 字典(一)

我已经定义bA. 这可能吗?

4

2 回答 2

7

如果您定义__iter__,它将正常工作(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__对于其他目的来说通常太有用了,不能浪费在这个方法上。

于 2013-01-21T04:31:51.227 回答
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()

或其他建议如何在 python 中实现自己的自定义 dict 类

于 2019-08-10T20:42:13.030 回答