附加处理程序以响应python中对象内的信号

时间:2013-09-10 20:07:23

标签: python

在javascript中,如果我有一个包含想要向对象外部发送信号的方法的对象,我可能会做这样的事情......

function class1(arg1){
    ...
    //something has happened - send out an alert
    this.method1();
    ...
}

var obj1 = new class1();

//define function to respond to the request from obj1 
obj1.method1 = function(){ ... }

在python中有相同的方法吗? (python 2)。

1 个答案:

答案 0 :(得分:2)

您可以在python中执行此操作。

class class1(object):
    def __init__(self, arg):
        self.arg = arg
    def myevent(self):
        self.method1(self)
    def realmethod(self):
        print('arg', self.arg)

def eventhandler(obj):
    print('event')
    obj.realmethod()


>>> obj1 = class1('real object attr')
>>> obj1.method1 = eventhandler
>>> obj1.myevent()
event
('arg', 'real object attr')

在javascript中,您希望确保在调用method1之前将其设置为可调用。

修改:更新的代码示例,以确保您可以将self传递给eventhandler,并像在实际方法中一样使用它。