Итак, я делаю ООП, и у меня есть зоопарк. Мой зоопарк - это класс, в котором содержатся зоопарки и животные. Животные имеют атрибуты «имя, корм, кормушка» (str, bool, obj). На моем терминале Zoo зоопарк может использовать мою программу. Он может: Накормить животное, проверить, кормят ли одно животное, а также может перечислить всех животных. Здесь моя проблема возникает. (Обратите внимание, что все мои животные сейчас находятся в одном классе и называются «Ларс Ледяной медведь» или «Немо клоунфиш»
Когда я проверяю одно животное, я ввожу имя животного и вызываю мой метод select_animal. Это возвращает экземпляр этого животного, если оно найдено, или 'none', если оно не найдено. 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), то будет напечатано «Ларс Ледяной Медведь, Правда»
Я просто хочу напечатать имя, поэтому я попытался сделать то же, что и в 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) и т. Д.