如何在遍历所述 class 的字典时 return 一个 class 值

How to return a class value when iterating through a dictionary of said class

在这个简化的形式中,我想在迭代 class 的字典时 return 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

我缺少什么才能让它工作?或者这甚至可能吗?

您正在打印密钥。改为打印值:

for k in aDict:
    print aDict[k]

或者您可以直接遍历值:

for v in aDict.itervalues():   # Python 3: aDict.values()
    print v

您的 classTest class 上的 __iter__ 没有被使用,因为您没有迭代 classTest 对象。 (并不是说它写的有任何意义。)

您不是在遍历 classes,而是在字典上。此外,您的 class 没有 __getitem__-Method,因此您的 __iter__ 甚至无法工作。

要获得结果,您可以这样做

for value in aDict.values():
    print value.bar1