2015-05-26 4 views
-1

Я работаю над текстовой приключенческой игрой, написанной на Python, просто для удовольствия (чтобы посмотреть, смогу ли я это сделать). Я работаю над модулем для сущностей, и я работаю над методом их убийства. Когда объект убит, вместо того, чтобы просто отображать сообщение об убийстве и визуализировать объект, который не может действовать, я также хочу, чтобы его экземпляр был удален для сохранения памяти.Уроки класса Python, удаляющие себя

Как я могу сделать экземпляр класса сущности самостоятельно?

Например (частично псевдокод):

class Entity(object): 
    #other methods here 

    def kill(self): 
     if self.health <= 0: 
      self.deleteinstance 
      or 
      deleteinstance(self) 

Заранее спасибо за вашу помощь.

EDIT: Я понимаю, что это дубликат, но ответы во всех остальных ссылаются на то, что объекты удаляются, когда ничто не относится к ним. Мой вопрос здесь в том, как ничего не ссылаться на экземпляр этого класса, потому что без метода kill предположительно экземпляр по-прежнему будет в памяти с отрицательным здоровьем.

+0

объекты Python являются мусором. Вам нужно только удалить любую ссылку на них, и они будут удалены автоматически. Google Python Object Lifetime, в том числе [этот пост SO] (http://stackoverflow.com/questions/11894045/python-object-lifetime-characteristics) для большего количества. – dawg

ответ

2

Теперь, зачем вы это делаете?

Объекты в Python будут собирать мусор, как только ничто не указывает на них, поэтому вам не нужно беспокоиться. В противном случае вы должны проверить некоторые ответы в этом другом вопросе SO: Python object deleting itself.

Вы можете попробовать:

def kill(): 
    if self.health < 0: 
     del self 
+0

Спасибо, я попробую это. Я не понимал, что это дубликат. – jm13fire

+0

Проверьте ответы в других вопросах, у них есть гораздо больше контента, который может быть полезен. – Zizouz212

+3

'del self' не будет делать ничего, что Python еще не собирается делать после завершения метода. – kindall

Смежные вопросы