Я делал этот проект Pokemon на Codecademy, и он попросил меня сделать что-то, о чем я совершенно не мог думать, так как у меня мало практики по OOPS и python.
Как Могу я установить is_knocked_out = True
, не вызывая никаких методов в моем экземпляре? Я думаю, что мой код должен автоматически знать, когда здоровье покемона становится равным нулю, и автоматически менять его атрибут is_knocked_out
на True
. Я искал в Интернете, но не нашел окончательного решения, возможно, это как-то связано с декораторами.
Кто-нибудь, пожалуйста, объясните мне, как это сделать, потому что я думаю, что здесь я наткнулся на стену.
Пока я написал следующий код:
class Pokemon:
def __init__(self,name,level,ptype,is_knocked_out= False):
self.name = name
self.level = level
self.type = ptype
self.max_health = level
self.curr_health = max_health
self.is_knocked_out = is_knocked_out
def lose_health(self,loss_amount):
self.curr_health -= loss_amount
print(f"{self.name} has now health of {self.curr_health}")
def regain_health(self,gain_amount):
self.curr_health += gain_amount
print(f"{self.name} has now health of {self.curr_health}")
#@property
def knock_out(self):
if self.curr_health <=0:
self.is_knocked_out = True
print(f"{self.name} has been knocked out")