也许我忽略了一些简单的事情,但我想将自定义类的实例转换为 python 中的字典(为了便于阅读),但不知道如何做。用伪代码解释,我希望能够做到这一点:
A类: # 类的东西... a = A() b = 字典(一)
我已经定义b
了A
. 这可能吗?
也许我忽略了一些简单的事情,但我想将自定义类的实例转换为 python 中的字典(为了便于阅读),但不知道如何做。用伪代码解释,我希望能够做到这一点:
A类: # 类的东西... a = A() b = 字典(一)
我已经定义b
了A
. 这可能吗?
如果您定义__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__
对于其他目的来说通常太有用了,不能浪费在这个方法上。
我认为,您可以像这样使用导入集合
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()