这是有问题的代码:
class Server(SocketServer.ForkingMixIn, SocketServer.TCPServer):
__slots__ = ("loaded")
class Handler(SocketServer.StreamRequestHandler):
def handle(self):
print self.server.loaded # Prints "False" at every call, why?
self.server.loaded = True
print self.server.loaded # Prints "True" at every call, obvious!
server = Server(('localhost', port), Handler)
server.loaded = False
while True:
server.handle_request()
每次有新请求进来时,我得到的输出False
后面都是True
. 我要的是False
第True
一次,True
以后也是True
。
为什么我对服务器实例中的变量所做的修改没有在处理程序handle()
函数的范围之外持续存在?
更新:
所以,我尝试使用全局变量来实现我想要的:
loaded = False
class Server(SocketServer.ForkingMixIn, SocketServer.TCPServer):
pass
class Handler(SocketServer.StreamRequestHandler):
def handle(self):
global loaded
print loaded # Prints "False" at every call still, why?
loaded = True
print loaded # Prints "True" at every call, obvious!
def main():
server = Server(('localhost', 4444), Handler)
global loaded
loaded = False
while True:
server.handle_request()
if (__name__ == '__main__'):
main()
它仍然不起作用,即产生与以前相同的输出。谁能告诉我哪里出错了?