类返回类型

时间:2014-10-14 16:12:58

标签: python class types return

我试图构建一个在调用它时返回字典的类。例如这段代码:

class foobar():
    def __init__(self):
        self.Dictionary = {}
        self.DictAddition()

    def DictAddition(self):
        self.Dictionary["Foo"] = "Bar"  

    def __repr__(self):
        return repr([self.Dictionary]) 

当我在我的脚本中调用类时会输出类' foobar.foobar'

Object = getattr(foobar, foobar)
Data = Object()
print(type(Data))

所有我可以打印数据,它将按预期打印一个字典,但我不能循环通过字典,因为它给出了一个TypeError,对象是不可迭代的。有没有办法可以从类中返回一个类型字典?

亲切的问候,

2 个答案:

答案 0 :(得分:2)

我必须说我真的不明白你在这里要做什么:只是让repr打印一本字典并不能使你的课程成为一个。但是,如果要为类启用迭代,则需要覆盖__iter__方法。

答案 1 :(得分:2)

所以你想要一个行为就像字典一样的对象,除了在对象创建过程中发生的一些特殊行为?听起来像是使用继承的绝佳时机。

class foobar(dict):
    def __init__(self):
        super(foobar, self).__init__()
        self["Foo"] = "Bar"  

data = foobar()
print data
for item in data:
    print "Item:", item

结果:

{'Foo': 'Bar'}
Item: Foo

现在,打印和迭代以及dict可以执行的所有其他操作也可以使用foobar类完成。