@kostyakos52000
студент

Как удалить экземпляр класса в классе в 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)
  • Вопрос задан
  • 215 просмотров
Решения вопроса 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 обьекта, если меньше ноля удаляйте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Evrone.com Воронеж
от 80 000 до 140 000 руб.
ICONIC Москва
от 170 000 до 260 000 руб.
от 140 000 до 180 000 руб.
20 февр. 2019, в 23:54
1000 руб./за проект
20 февр. 2019, в 23:26
25000 руб./за проект
20 февр. 2019, в 22:04
500 руб./за проект