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

ast*_*tex 0 python

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

class A:
   # class things...

a = A()
b = dict(a)

我在哪里定义了b内在的东西A.这可能吗?

DSM*_*DSM 6

如果你定义__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()
Run Code Online (Sandbox Code Playgroud)

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

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

  • @Lattyware:或者我们可以分开区别,使用@tcaswell建议的自定义`__str__`或`__repr__`,如果可读性是关注点,而不是dict本身。 (2认同)