所以我试着从进步班的进步中得到这笔钱。然而,我已经尝试了很多次从WebSocket类访问它,但是不能。这里有什么问题?
谢谢!
from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer
class Progressive():
def __init__(self):
self.progressive = 0
def affect(self, amt):
self.progressive += amt
class SimpleEcho(WebSocket):
progressive = Progressive()
def handleMessage(self):
if self.data is None:
self.data = ''
# echo message back to client
self.sendMessage(str(self.data))
print 'Sent back', str(self.data)
def handleConnected(self):
print self.address, 'connected'
print progressive.progressive
def handleClose(self):
print self.address, 'closed'
server = SimpleWebSocketServer('', 8000, SimpleEcho)
server.serveforever()发布于 2014-03-12 07:04:09
您在类范围中声明了progressive,但是试图引用它,就好像它是在本地范围中定义的一样。您需要在其前缀加上self或SimpleEcho。
class SimpleEcho(WebSocket):
progressive = Progressive()
def handleConnected(self):
print self.address, 'connected'
print self.progressive.progressiveProgressive类也有相同的问题。注意,affect应该用一个初始的self参数来定义,因为它不是staticmethod
class Progressive():
progressive = 0
def affect(self, amt):
self.progressive += amt不过,!
这里所做的一切意味着Progressive的每个实例都将修改相同的progressive属性(对每个SimpleEcho实例也是如此)。您可能要做的是在初始化实例时在两个类上声明progressive属性:
class Progressive():
def __init__(self):
self.progressive = 0https://stackoverflow.com/questions/22341153
复制相似问题