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 #683

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
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
39 changes: 38 additions & 1 deletion app/main.py
Original file line number Diff line number Diff line change
@@ -1 +1,38 @@
# write your code here
class Animal:

alive = []

def __init__(self, name: str,
health: int = 100,
hidden: bool = False) -> None:

self.name = name
self.health = health
self.hidden = hidden

self.alive.append(self)

Choose a reason for hiding this comment

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

You should access class attribute through class name not self

def __str__(self) -> str:

return (f"{{Name: {self.name}, "
f"Health: {self.health}, "

Choose a reason for hiding this comment

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

if __repr__ is defined, and __str__ is not, the object will behave as though __str__=__repr__
So you can just change repr method here

Copy link
Author

Choose a reason for hiding this comment

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

It is interesting. Thank you very much)

f"Hidden: {self.hidden}}}")

def __repr__(self) -> str:
return self.__str__()


class Herbivore(Animal):

def hide(self) -> None:
self.hidden = not self.hidden


class Carnivore(Animal):

@classmethod
def bite(cls, victim: "Herbivore") -> None:
if not isinstance(victim, Carnivore) and not victim.hidden:

Choose a reason for hiding this comment

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

If your method takes only Herbivore, then you wouldn't need the next check
Also no need to use quotes here

Copy link
Author

Choose a reason for hiding this comment

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

Unfortunately without "if not isinstance(victim, Carnivore)" check I receive error "FAILED tests/test_main.py::test_carnivore_bite_carnivore - assert 50 == 100"
With this check code working fine
quotes I will remove for shoure

victim.health -= 50
if victim.health <= 0:
cls.alive.remove(victim)
Loading