也许我忽略了一些简单的东西,但是我想在python中将一个自定义类的实例转换为字典(为了便于阅读),但是还没有得到如何说明。为了解释伪代码,我希望能够做到这一点:
class A: # class things... a = A() b = dict(a)
我在b
内定义了A
的内容。这可能吗?
答案 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()