首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从WebSocket服务器访问类变量

无法从WebSocket服务器访问类变量
EN

Stack Overflow用户
提问于 2014-03-12 03:01:27
回答 1查看 105关注 0票数 0

所以我试着从进步班的进步中得到这笔钱。然而,我已经尝试了很多次从WebSocket类访问它,但是不能。这里有什么问题?

谢谢!

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 07:04:09

您在类范围中声明了progressive,但是试图引用它,就好像它是在本地范围中定义的一样。您需要在其前缀加上selfSimpleEcho

代码语言:javascript
复制
class SimpleEcho(WebSocket):
    progressive = Progressive()

    def handleConnected(self):
        print self.address, 'connected'
        print self.progressive.progressive

Progressive类也有相同的问题。注意,affect应该用一个初始的self参数来定义,因为它不是staticmethod

代码语言:javascript
复制
class Progressive():
    progressive = 0

    def affect(self, amt):
        self.progressive += amt

不过,

这里所做的一切意味着Progressive的每个实例都将修改相同的progressive属性(对每个SimpleEcho实例也是如此)。您可能要做的是在初始化实例时在两个类上声明progressive属性:

代码语言:javascript
复制
class Progressive():
    def __init__(self):
        self.progressive = 0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22341153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档