Как мне уничтожить объект в python? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть класс таймера, который я спроектировал, чтобы выстрелить один раз и (оптимально) удалить себя. Есть ли способ для меня, чтобы реализовать это самоуничтожение?

class timer:
        def __init__(self, duration, function, args):
            self.duration = duration
            self.function = function
            self.args = args
        def start(self):
            self.time = time.time()
            self.validity = True    
        def check(self):
            if(int(self.time)+self.duration < time.time() ):
                self.function(self.args)
                self.validity = False
        def __del__(self):
            print("timer destroyed")

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Вы можете следовать аналогичному подходу.

Для уничтожения экземпляра может быть вызван object.__del__(self).

>>> class Test:
...     def __del__(self):
...         print "deleted"
... 
>>> test = Test()
>>> del test
deleted

Объект не удаляется, если не удалены все его ссылки

Кроме того, с Python Официальная ссылка c:

del x не вызывает напрямую x. del () - первая уменьшает ссылку считать для x на единицу, и последний вызывается только тогда, когда счетчик ссылок x достигает нуля

В вашем решении вам понадобится использовать что-то вроде del object, где объект является экземпляром, который вы хочу удалить.

0 голосов
/ 25 марта 2020

Вы пробовали использовать None? как то так:

timer = None
...