@kostyakos52000
student

Как удалить экземпляр класса в классе в Python?

Возможно ли удалить его в указанном месте в коде?
class Hero:

    def __init__(self):
        self.name = input("name? ")
        self.health = 100

    def blast(self, enemy):
        damage = 55
        enemy.hurt(damage)

    def hurt(self, damage):
        self.health -= damage
        if self.health <= 0:
            # в этом месте экземпляр класса должен удаляться
            # (в данном примере должен удалиться экземпляр person2)
        else:
            print(self.name + ": you hurt me! i have %d health" % self.health)
person1 = Hero()
person2 = Hero()

person1.blast(person2)
person1.blast(person2)
  • Вопрос задан
  • 265 просмотров
Решения вопроса 3
Zarom
@Zarom
Мастер на все руки из жопы
Как это - вы хотите из экземпляра класса удалить его же самого?
Задача решается добавлением property класса is_dead и проверкой этого состояния извне. По обнаружению этого факта можно, но только если оч хочется, сделать person2 = None - вот и удаление.
Ответ написан
@Andrey_Dolg
Поддержу человека выше. Вы должны обнулить счетчик ссылок на объект и видимо для этого нужен доступ к переменой person2 вне класса.
Ответ написан
@Forevka69
Создайте список в который будете добавлять указатели на обьекты
например:
all_objects = []
person1 = Hero()
person2 = Hero()
all_objects.append(person1)
all_objects.append(person2)
и потом просто проходитесь циклом по этому списку и проверяйте значения health обьекта, если меньше ноля удаляйте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы