2014-02-14 128 views
1

我想继承Leap.Listener并与控制器进行注册:Leapmotion听众注册失败

class myLeapMotion(Leap.Listener): 
    def __init__(self) : 
     controller = Leap.Controller() 
     controller.add_listener(self) 

这就提出了一个例外:

TypeError: in method 'Controller_add_listener', argument 2 of type 'Leap::Listener &' 

我怎样才能把我的子类作为该参考控制器?

我以为self会是这里的监听者,但我不知道写它的正确的Python语法。

+2

你的问题不清楚。它看起来已经传递了对象(如'self')。你的代码没有做你想做的事情? – BrenBarn

+0

你“不知道写什么的语法”? Leap.Controller.add_listener()已经被编写为库方法,是吗?或没有?如果是的话,请按照其文档。如果没有,则发布Leap.Controller的代码。 – smci

+0

TypeError:方法'Controller_add_listener',参数2类型'Leap :: Listener&'它是我的错误。是它来自图书馆 – skami

回答

2

Python中的所有对象都是通过引用传递的,所以不需要特殊的语法。你的代码应该工作。事实上,没有办法通过引用来传递它。

UPD:由于您的问题已被更改,因此很明显,您的程序失败并不是因为错误地传递了self。这是您使用的图书馆的问题。尝试为您的基类执行正确的初始化,在添加侦听器之前调用super(myLeapMotion, self).__init__()。至少here这样做。

UPD2:看起来我是对的。 Here代码作者几乎和你一样。唯一的区别是他称基类为__init__

+1

很抱歉,您的回答无效; OP的确在做正确的事情,但问题在于使用了特定的SDK,而不是Python语法。 –

+0

你能解释为什么OP会出现错误吗?我认为这个问题不是关于“通过引用传递”,而是如何将自我传递给另一个功能。 –

+0

是的,我想实例化一个控制器类型的对象在其他侦听器对象,但我需要链接他与监听器obj – skami