Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solution #1315

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 53 additions & 1 deletion app/main.py
Original file line number Diff line number Diff line change
@@ -1 +1,53 @@
# write your code here
from typing import Any


class Animal:
def __init__(
self,
name: str,
appetite: int,
is_hungry: bool = True
) -> None:
self.name = name
self.appetite = appetite
self.is_hungry = is_hungry

def print_name(self) -> None:
print(f"Hello, I'm {self.name}")

def feed(self) -> int:
if self.is_hungry:
self.is_hungry = False
print(f"Eating {self.appetite} food points...")
return self.appetite
else:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The feed method should update the is_hungry attribute to False after feeding the animal. This ensures that the animal's state is correctly updated after being fed.

return 0


class Cat(Animal):
def __init__(self, name: str, is_hungry: bool = True) -> None:
self.name = name
self.is_hungry = is_hungry
super().__init__(name=name, appetite=3, is_hungry=is_hungry)

def catch_mouse(self) -> None:
print("The hunt began!")


class Dog(Animal):
def __init__(self, name: str, is_hungry: bool = True) -> None:
self.name = name
self.is_hungry = is_hungry
super().__init__(name=name, appetite=7, is_hungry=is_hungry)

def bring_slippers(self) -> None:
print("The slippers delivered!")


def feed_animals(animals: Any) -> int:
total_food_points = 0
for animal in animals:
if animal.is_hungry:
total_food_points += animal.appetite
animal.feed()
Comment on lines +50 to +51

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To adhere to encapsulation principles, you should not directly access the appetite attribute. Instead, use the feed method to handle feeding logic, which will also update the is_hungry attribute appropriately. This ensures that any logic related to feeding is encapsulated within the feed method.

return total_food_points
Comment on lines +51 to +52

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of directly accessing animal.appetite, consider using the feed method to encapsulate the feeding logic. This will also ensure that the is_hungry attribute is updated correctly if the feed method is modified to do so.

Loading