我有一个家长班:
class Animal(object):
animalFoods = {'Elephant': ['Grass', 'Trees'], 'Turtle': 'Fish'}
def animal_food(self):
foods = Animal.animalFoods[self.__class__.__name__]
for food in foods:
return food
然后我有一个子类:
class Elephant(Animal):
pass
我创建一个对象:
Dumbo = Elephant()
试着打印出它的食物选择:
>>> print(Dumbo.animal_food())
Grass
我希望能打印出来
Grass
Trees
通过在animalFoods
字典中查找键,我了解了它的工作原理,但我不确定它为什么不在值列表中同时返回这两个值。你知道吗
与仅仅提供一个快速而肮脏的答案相比,额外阅读的指针是值得赞赏的,因为这是我第一次使用超出单个值的字典。你知道吗
请看这里:
对于
foods
,它是对的,即['Grass', 'Trees']
。你知道吗但是你做了
for food in foods: return food
。return
只返回for loop
,因此得到一个结果。你知道吗return food
将立即结束animal_food
的执行;它不会尝试完成循环。如果您想变得非常花哨,可以使用yield food
将方法转换为生成器,但对于本例,您可能只想完全替换方法体:一旦函数或方法返回一个值,for循环的执行就会停止。你知道吗
如果您只想打印项目,可以将
print
语句添加到类方法animal_food()
,如下所示:然后,调用
Dumbo.animal_food()
将打印两个答案。你知道吗相关问题 更多 >
编程相关推荐