Форум сайта python.su
0
Здравствуйте, подскажите пожалуйста.
# file1.py class TEMP1(object): def __init__(self): pass def func1(self, *a, **k): print 'TEMP1 > func1' t1 = TEMP1() # file2.py #from file1 import TEMP1 def decorate(function): print 'start decorate' def wrap(*a, **k): print 'start wrap' return function(*a, **k) return wrap @decorate def new_func1(*a, **k): old_func1(*a, **k) print 'hook: new_func1' old_func1 = TEMP1.func1 TEMP1.func1 = new_func1 def myFunc(): print 'myFunc' t1.func1()
Офлайн
568
Изобретатель, вы чего в конечном итоге сделать то хотите? Давайте без event-ов и прочих глупостей, какую текущую задачу вы хотите решить вот этим function += myFunc ?
Офлайн
0
FishHook
Изобретатель, вы чего в конечном итоге сделать то хотите? Давайте без event-ов и прочих глупостей, какую текущую задачу вы хотите решить вот этим function += myFunc ?
Отредактировано Unnamed001 (Апрель 7, 2016 12:30:16)
Офлайн
0
У меня перехватывается функция
def new_func1(*a, **k): old_func1(*a, **k) print 'hook: new_func1' old_func1 = TEMP1.func1 TEMP1.func1 = new_func1
Отредактировано Unnamed001 (Апрель 7, 2016 12:53:02)
Офлайн
49
1 Читаем, что такое посредник (mediator).
2 Читаем, что такое наблюдатель (observer).
Выбираем любой понравившийся 
Офлайн
0
Мне не нужны сторонние библиотеки.
Отредактировано Unnamed001 (Апрель 7, 2016 19:26:37)
Офлайн
221
Unnamed001
это шаблоны проектирования :-)
Офлайн
253
Unnamed001Вам нужны потусторонние? Если вы не будете использовать библиотеки то питон вам не нужен.
Мне не нужны сторонние библиотеки.
class Td(list): def __init__(self, *args): list.__init__(self, *args) def __call__(self): for i in self: i() def __iadd__(self,i): self.append(i) return self a=Td() def b(): print("hello! b") a+=b a+=b a() >>> hello! b hello! b
Офлайн