Вот код, о котором идет речь:
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()
И он все еще не работает, то есть выдает тот же результат, что и раньше.Может кто-нибудь сказать мне, где я иду не так?