Ваш код должен работать нормально, единственное, что вам может потребоваться исправить, это то, что взаимодействие с пользователем отключено для UILabel по умолчанию, поэтому распознаватель жестов не получает никаких событий касания. Попробуйте вручную включить его, добавив эту строку в ваш код (например, в методе init):
self.userInteractionEnabled = YES;
Какой класс при уничтожении? Вы сказали модуль?
Ваш модуль живет до остановки интерпретатора. вы можете добавить что-то для запуска в то время, используя модуль "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)
Или еще лучше:
Используйте метод del:
class Foo:
def __init__(self):
print "constructor called."
def __del__(self):
print "destructor called."
Вам нужен метод деструктора класса __ del __
. В __ del __
есть некоторые нюансы в том, когда он вызывается, а также в том, как следует обрабатывать исключения и подклассы, поэтому обязательно прочтите официальную документацию .
Краткое примечание по терминологии тоже: в python модуль
- это файл, в котором находится ваш код ... по сути, пространство имен. Один модуль может содержать множество классов, переменных и функций. Метод __ del __
находится в классе, а не в модуле.