在这种简化形式中,我希望在迭代一个类的字典时返回bar1的值,以避免出现需要列表的库的问题。
class classTest:
def __init__(self, foo):
self.bar1 = foo
def __iter__(self):
for k in self.keys():
yield self[k].bar1
aDict = {}
aDict["foo"] = classTest("xx")
aDict["bar"] = classTest("yy")
for i in aDict:
print i
当前输出
foo
bar
我的目标是此输出为
xx
yy
我错过了什么让这个工作?或者这甚至可能吗?
答案 0 :(得分:3)
你没有迭代这些类,而是字典。此外,您的课程没有__getitem__
- 方法,因此您的__iter__
甚至无法使用。
要获得结果,您可以
for value in aDict.values():
print value.bar1
答案 1 :(得分:1)
您正在打印密钥。改为打印值:
for k in aDict:
print aDict[k]
或者您可以直接迭代值:
for v in aDict.itervalues(): # Python 3: aDict.values()
print v
__iter__
课程classTest
未被使用,因为您没有在classTest
对象上进行迭代。 (并不是说它写得有意义。)