是否可以将dict功能添加到用户创建的类中?
即:
class Foo(object):
def __init__(self, x, y):
self.x
self.y
def __dict__(self):
return {'x': self.x, 'y': self.y}
f = Foo()
dict(f) <-- throws TypeError: iteration over non-sequence
答案 0 :(得分:3)
dict
构造函数需要将键/值对的映射或迭代作为参数,因此您的类需要实现映射协议或可迭代。
以下是如何实现后一种方法的示例:
class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __iter__(self):
return vars(self).iteritems()
使用示例:
>>> dict(Foo(2, 3))
{'x': 2, 'y': 3}
但是,我不知道这有多大用处。你可以做到
>>> vars(Foo(2, 3))
{'x': 2, 'y': 3}
如果没有在您的课程上实施__iter__()
,则可以使用。