Метод, к которому обращаются удаление модуля в Python

Ваш код должен работать нормально, единственное, что вам может потребоваться исправить, это то, что взаимодействие с пользователем отключено для UILabel по умолчанию, поэтому распознаватель жестов не получает никаких событий касания. Попробуйте вручную включить его, добавив эту строку в ваш код (например, в методе init):

self.userInteractionEnabled = YES;
6
задан Dan 6 August 2013 в 19:37
поделиться

3 ответа

Какой класс при уничтожении? Вы сказали модуль?

Ваш модуль живет до остановки интерпретатора. вы можете добавить что-то для запуска в то время, используя модуль "atexit":

import atexit
atexit.register(myfunction)

РЕДАКТИРОВАТЬ: на основе ваших комментариев.

Поскольку вы не хотите, чтобы это было деструктором, мой ответ выше правильный. Просто определите другую функцию (или статический метод, если хотите) и зарегистрируйте ее с помощью atexit:

def close_database():
    proceed_to_close()

import atexit
atexit.register(close_database)

Теперь небольшое примечание к вашему определению.

Вы сказали, что у класса нет экземпляров. Так зачем делать это классом? Почему бы вместо этого не определить функции на уровне модуля? модули являются первоклассными объектами, кэшируются и импортируются только один раз ...

Пример, вместо определения database.py :

class DataBase(object):
    @staticmethod
    def execute_some_query(query):
        code_here()
        some_code()
    @staticmethod
    def close_database():
        proceed_to_close()
import atexit ; atexit.register(DataBase.close_database)

и использования:

from database import DataBase
DataBase.execute_some_query(query)

Вы можете сделать это вместо database.py :

def execute_some_query(query):
    code_here()
    some_code()

def close_database():
    proceed_to_close()
import atexit ; atexit.register(close_database)

И используйте его так:

import database
database.execute_some_query(query)

Или еще лучше:

18
ответ дан 8 December 2019 в 13:48
поделиться

Используйте метод del:

class Foo:

    def __init__(self):
        print "constructor called."

    def __del__(self):
        print "destructor called."
-1
ответ дан 8 December 2019 в 13:48
поделиться

Вам нужен метод деструктора класса __ del __ . В __ del __ есть некоторые нюансы в том, когда он вызывается, а также в том, как следует обрабатывать исключения и подклассы, поэтому обязательно прочтите официальную документацию .

Краткое примечание по терминологии тоже: в python модуль - это файл, в котором находится ваш код ... по сути, пространство имен. Один модуль может содержать множество классов, переменных и функций. Метод __ del __ находится в классе, а не в модуле.

1
ответ дан 8 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: