Форум сайта python.su
Всем привет!
Пытаюсь решить следующую задачу по ООП.
Напишите программу зооферма, в которой будут созданы несколько объектов класса Critter, а манипулировать ими всеми можно будет с помощью списка. Теперь пользователь должен заботиться не об одной зверушке, а обо всех обитателях зоофермы. Выбирая пункт в меню, пользователь выбирает действие, которое хотел бы выполнить со всеми зверушками: покормить их, поиграть с ними или узнать об их самочувствии. Чтобы программа была интереснее, при создании каждой зверушки следует назначить ей случайно выбранные уровни голода и уныния.
Я никак не придумаю как написать код, который позволит манипулировать ими всеми с помощью списка.
Допустим я создал класс Critter и описал в нем методы и атрибуты. Потом я инициализирую 3 объекта данного класса:
def main():
cow = Critter(name = “Корова”, hunger = random.randint(1,5), boredom = random.randint(1,5))
hen = Critter(name = “Курица”, hunger = random.randint(1,5), boredom = random.randint(1,5))
pig = Critter(name = “Свинья”, hunger = random.randint(1,5), boredom = random.randint(1,5))
Как манипулировать ими с помощью списка?
Помогите пожалуйста.
Офлайн
Методы класса
хотя не тут же список блин еще
Отредактировано AD0DE412 (Май 6, 2021 22:57:56)
Офлайн
Ruslan_NaliМожет имелось ввиду что все созданные зверушки должны быть в списке,а потом когда нужно отдать команду,просто пройтись по списку и для каждой зверушки выполнить метод.типа
Как манипулировать ими с помощью списка?
зверюшки = [корова,петух,свинья,опоссум] для зверюшка в зверюшки: зверюшка.покормить()
Офлайн
class X: all_self = [] def __init__(self, data): self.x = data self.__class__.all_self.append(self) def set_x(self, data): self.x = data @classmethod def for_all_self(cls, data): for i in cls.all_self: i.set_x(data) a = X(1) b = X(2) print(f"поштучно: a = {a.x}, b = {b.x}") X.for_all_self(5) print(f"опт: a = {a.x}, b = {b.x}")
Отредактировано AD0DE412 (Май 7, 2021 00:23:12)
Офлайн
Ruslan_Nali1. Странная у вас ферма. Обычно на зооферме животные одного вида содержат. А вы в одно стойло корову с курицей поместили. Надо зверюг по кличкам различать. А так у вас Ноев ковчег получился.
cow = Critter(name = “Корова”, hunger = random.randint(1,5), boredom = random.randint(1,5))
hen = Critter(name = “Курица”, hunger = random.randint(1,5), boredom = random.randint(1,5))
pig = Critter(name = “Свинья”, hunger = random.randint(1,5), boredom = random.randint(1,5))
Ruslan_Nali3. :) Меня такой подход возмущает. Надо делать свойства сытость и радость. А так это концлагерь а не ферма.
выбранные уровни голода и уныния.
xam18164. Тоже ужас. У вас одна животина голодная другая сытая, а вы всех одинаково кормите. Так либо одна сдохнет либо другая лопнет. Особенно если в одном месте содержать курицу и корову.
для зверюшка в зверюшки:
зверюшка.покормить()
for i in animals: if i.сытость < 0.5: i.покормить()
Отредактировано doza_and (Май 7, 2021 06:01:08)
Офлайн
Спасибо вам всем большое.
Обязательно пересмотрю свое видение о зооферме )
Офлайн
doza_andта нэ то не может быть нихоче не ист людина некхого неэ ниволятъ
другая лопнет
Офлайн
AD0DE412Ну ок. Корм сожрет и переведет его в навоз. Все равно убыток. Где-то читал что весовой КПД кормления бройлеров сейчас около 80 процентов. Еда практически полностью переводится в курочку.
та нэ то не может быть нихоче
Офлайн
Я конечно вас уважаю как программиста и человека
но я вас умоляю вы совершено не разберетесь в фермах
вы спросите меня за фермы
я вам скажу за фермы
навоз это не shit навоз это gold
органиничный натуралик для садоводов
а закорма
что вы знаете закорма
послушаете есть же сойлент
красный желтый но лучше зеленый от него хоть и случается бешенство у коров
но имейте уважение
коровы это же не свиньи
так ведь?
берите два не раздумывайте
пока есть
Отредактировано AD0DE412 (Май 8, 2021 08:45:39)
Офлайн