【发布时间】:2019-01-14 09:07:41
【问题描述】:
所以我在做 OOP,我有一个 Zoo。我的动物园是一个拥有动物园管理员和动物的班级。这些动物具有属性“名称、喂食、喂食者”(str、bool、obj)。在我的 Zoo 终端上,动物园管理员可以使用我的程序。他可以: 喂养动物,检查是否喂养了一只动物,还可以列出所有动物。这就是我的问题发生的地方。 (请注意,我所有的动物现在都属于同一类,并被命名为“冰熊拉尔斯”或“小丑鱼尼莫”
当我检查一只动物时,我输入动物名称并调用我的 select_animal 方法。如果找到,则返回此动物的实例,如果未找到,则返回“无”。 elif 'c' 因为 a 和 b 是饲料动物并列出所有动物。 check_animal 检查它是否被喂食。
elif(chosen_program == "c"):
selected_animal = select_animal()
checked_animal = first_zoo.check_aniaml(selected_animal)
if(checked_animal == True):
print(str(selected_animal.name) + " has been fed by " + str(selected_animal.keeper.name))
else:
print(selected_animal.name + " hasn't been fed yet!")
这很好用。它打印得很好“狮子辛巴还没有被喂饱”或“狮子辛巴已经被迈克喂饱了”
当我打印列表时:
elif(chosen_program == "b"):
print("\nKeepers:")
for Keeper in first_zoo.keeper_list:
print(Keeper.name + ", ", end='')
print(Keeper.fed_animals) # fed animals is a list
print("\nAnimals:")
for Animal in first_zoo.animal_list: #
print(Animal.name + ", ", end='') #
print(str(Animal.fed) + ", ", end='') #bool
print(Animal.feeder) #pointer to the feeder, not a str!
这也有效,但不像我想要的那样。如果我把 print(Animal.feeder) 打印出来“Lars the Icebear, True,”
我只是想打印名字,所以我尝试了我在 c) 中所做的 print(Animal.feeder.name)
Exception has occurred: AttributeError
'str' object has no attribute 'name'
File "C:\Users\x\Google Drive\Files\Programs\python\Library\main.py", line 122, in <module>
print(Animal.feeder.name)
总结:这是我的问题。如何打印门将的姓名。在 python 中有一个很好的函数,我可以 xprint(animal_list) 并且它会给我 ("Lars the Icebear", True, "Mike"; "Nemo the clownfisch", False, none) 等等?
【问题讨论】:
-
是动物园管理员和动物课程吗?
-
@doctorlove 正确。
-
如果您需要帮助为它们编写字符串方法,我认为您需要显示您的类定义
标签: python python-3.x oop