我试图构建一个在调用它时返回字典的类。例如这段代码:
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,对象是不可迭代的。有没有办法可以从类中返回一个类型字典?
亲切的问候,
答案 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
类完成。