Найти - Пользователи
Полная версия: ООП
Начало » Python для новичков » ООП
1
Ruslan_Nali
Всем привет!

Пытаюсь решить следующую задачу по ООП.
Напишите программу зооферма, в которой будут созданы несколько объектов класса 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
Методы класса
хотя не тут же список блин еще
xam1816
Ruslan_Nali
Как манипулировать ими с помощью списка?
Может имелось ввиду что все созданные зверушки должны быть в списке,а потом когда нужно отдать команду,просто пройтись по списку и для каждой зверушки выполнить метод.типа
 зверюшки = [корова,петух,свинья,опоссум]
для зверюшка в зверюшки:
   зверюшка.покормить()
AD0DE412
 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}")
?
doza_and
Ruslan_Nali
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))
1. Странная у вас ферма. Обычно на зооферме животные одного вида содержат. А вы в одно стойло корову с курицей поместили. Надо зверюг по кличкам различать. А так у вас Ноев ковчег получился.
2. Инициализацию свойств лучше убрать в __init__ чтобы упростить создание.

Ruslan_Nali
выбранные уровни голода и уныния.
3. :) Меня такой подход возмущает. Надо делать свойства сытость и радость. А так это концлагерь а не ферма.

xam1816
для зверюшка в зверюшки:
зверюшка.покормить()
4. Тоже ужас. У вас одна животина голодная другая сытая, а вы всех одинаково кормите. Так либо одна сдохнет либо другая лопнет. Особенно если в одном месте содержать курицу и корову.
  
for i in animals:
   if i.сытость < 0.5:
       i.покормить()
5. Код должен иметь некую цель. Например установить экономически обоснованную частоту кормления, порог начала кормления, периодичность осеменения и т.п. Если кормить редко то зверюги будут голодные и привес будет маленький а часть зверюг сдохнет от голода. С другой стороны каждое кормление это затраты времени персонала. Код может позволить оценить оптимальную стратегию кормления.

Подходы к разведению коров можно посмотреть тут
https://www.youtube.com/watch?v=Of_ncEWRd2E&t=2241s

Правда судя по видео надо предусмотреть затраты на боеприпасы еще.
Ruslan_Nali
Спасибо вам всем большое.
Обязательно пересмотрю свое видение о зооферме )
AD0DE412
doza_and
другая лопнет
та нэ то не может быть нихоче не ист людина некхого неэ ниволятъ
doza_and
AD0DE412
та нэ то не может быть нихоче
Ну ок. Корм сожрет и переведет его в навоз. Все равно убыток. Где-то читал что весовой КПД кормления бройлеров сейчас около 80 процентов. Еда практически полностью переводится в курочку.
AD0DE412
Я конечно вас уважаю как программиста и человека
но я вас умоляю вы совершено не разберетесь в фермах
вы спросите меня за фермы
я вам скажу за фермы
навоз это не shit навоз это gold
органиничный натуралик для садоводов
а закорма
что вы знаете закорма
послушаете есть же сойлент
красный желтый но лучше зеленый от него хоть и случается бешенство у коров
но имейте уважение
коровы это же не свиньи
так ведь?

берите два не раздумывайте
пока есть
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB