我写了这个简单的类:
class MyDictionary:
def __init__(self):
self.dictionary = {}
然后我填写我的词典:
>>> fruit = MyDictionary()
>>> fruit.dictionary["apples"] = 13
>>> fruit.dictionary["cherrys"] = 12
然后当我写>>>时,我希望如此打印(水果),一个词典看起来像:
I have 13 apples in my bag
I have 12 cherrys in my bag
所以我创建了这个简单的属性类:
def __str__(self):
for key, value in self.dictionary.items():
return "I have {} {} in my bag".format(value, key)
但这只返回第一行:
I have 13 apples in my bag
并且不打印cherrys系列!为什么?如何将循环放在 str 属性中?
非常感谢你帮助我!
答案 0 :(得分:0)
return
打破了你的函数的控制流,并使它立即退出返回你传递给它的值,这就是为什么它会在第一次迭代时停止使用你的代码发布。这完全符合预期,请参阅return
statement的文档。
在返回之前,您需要在某处积累部分结果,例如:
def __str__(self):
pieces = []
for key, value in self.dictionary.items():
pieces.append("I have {} {} in my bag".format(value, key))
return "\n".join(pieces)