将python的dict功能扩展到用户创建的类

时间:2011-11-17 14:40:47

标签: python dictionary map extend

是否可以将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

1 个答案:

答案 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__(),则可以使用。