Форум сайта python.su
При запуске программы некоторым классам нужно подписаться на некоторые события. Это можно сделать вызвав при запуске методы этих классов. Проблема в том, что перечень классов, которые нуждаются в подписке, заранее неизвестен. Хотелось бы узнать есть ли какой-то механизм запуска определенного метода во всех классах проекта или есть какой-то специальный метод класса, который срабатывает в момент запуска программы. Т.е. например:
from misc.event import Event
class Dummy(object):
@classmethod
def initialize(cls):
Event.subscribe('event_name', cls.__method_to_invoke)
@staticmethod
def __method_to_invoke():
# Сделать всем хорошо
Отредактировано (Ноя. 5, 2010 16:09:01)
Офлайн
читай про паттерн Observer
Офлайн
Прочитал. В примерах паттерна Observer создаются экземпляры класса, которые подписываются на события. В моем случае экземпляра нет. Например диалоговое окно, которое должно быть создано только по событию.
Офлайн
может вам нужен не
@classmethod
@staticmethod
Офлайн
А какая разница? staticmethod тоже не дернется до тех пор, пока я явно не обращусь к классу. В C# например можно было воспользоваться классами Assembly и MethodInfo, опросив все классы сборки по имени метода и вызвав все Initialize() какие будут найден. В питоне есть что-то подобное? Или опять же, может быть есть какой-то специальный метод класса, который вызывается при запуске программы, но до обращения к методам класса?
Офлайн
Офлайн
Как это может помочь?
Офлайн
SotericНикак. Кому-то просто захотелось по-придираться.
Как это может помочь?
Офлайн
DaevaornНет, просто изначально не так понял задачу.
Никак. Кому-то просто захотелось по-придираться.
Офлайн
SotericПодписывай классы. В чем проблема-то? :-)
Прочитал. В примерах паттерна Observer создаются экземпляры класса, которые подписываются на события. В моем случае экземпляра нет
Офлайн