我使用的是一个simpleWebSocket服务器类,有一个1秒的间隔计时器,我想在几个不同的类中调用方法。在
wsscb()类是SimpleWebSocketServer()的处理程序,如何从另一个对象(如udt()计时器)调用wss()对象的方法?在
呼叫wss.wsscb公司().myfunc()导致错误:“AttributeError:”SimpleWebSocketServer“对象没有属性”wsscb“”
呼叫wsscb.myfunc()结果为:TypeError:必须以wsscb实例作为第一个参数调用未绑定方法myfunc()(而未获得任何结果)
class wsscb(WebSocket):
def __init__(self, server, sock, address):
WebSocket.__init__(self, server, sock, address)
def myfunc(self):
self.send('some data')
def handleMessage(self):
pass
def handleConnected(self):
pass
class udt(Thread):
def __init__(self, event):
Thread.__init__(self)
self.stopped = event
def run(self):
while not self.stopped.wait(1.00):
wss.wsscb().myfunc()
xxx.yyy()().anotherfunc()
## Main
wss = SimpleWebSocketServer('', 4545,wsscb)
## Start Timer
stopFlag = Event()
self.udt = udt(stopFlag)
self.udt.start()
wss.serveforever()
有几个问题。在
wss.wsscb()
无效。键入这意味着您正在尝试调用wss中名为wsscb()
的函数。wss
是SimpleWebSocketServer,没有名为wsscb()
的函数。函数与调用对象不同。在wsscb()
也不起作用,因为在你的类中,你说它需要一个WebSocket
对象,我假设这个对象需要一些参数,所以你需要传递这些参数。在我认为最好是生成一个
SimpleWebSocketServer
(而不是WebSocket
)的子类,并将自定义函数放在其中。您的注释说“wsscb()是SimpleSocketServer的一个子类”,但事实并非如此。它是WebSocket
的一个子类。在您还从未创建wsscb类型的对象。在
如果你能解释一下你想要达到的目标,以及
myfunc()
是什么,我们也许能提供更多帮助另外,你真的不应该子类
Thread
。废弃您创建的udt
类,取而代之的是您可能还想进一步了解继承:
相关问题 更多 >
编程相关推荐