误解web.py申请

misunderstanding web.py application

import web

urls = ('/', 'Login')
app = web.application(urls, globals())

class Test:
    lists = []

    def bind(self, value):
        self.lists.append(value)

class Login:

     def GET(self):
         test = Test()
         test.bind('some value')
         return rest.lists

     def POST(self):
         test = Test()
         test.bind('another value')
         return test.lists


if __name__ == '__main__':
    app.run()

App 运行 很好,但有结果:

  1. localhost/login #get 方法 >>> 一些值。

  2. localhost/login #get 方法 >>> 一些值,一些值。

  3. localhost/login #post 表单操作中的方法 >>> 一些值,一些值,另一个值。

怎么可能? 预期结果是,在 test.lists 中的每个请求之后将只有一个值

Test class 将列表定义为 class 变量 - 这意味着同一个列表在 class 的所有实例之间共享。你可能想要这样的东西:

class Test(object):
    def __init__(self):
        self.lists = []

    def bind(self, value):
        self.lists.append(value)

现在每个实例在创建时都会创建自己的 .lists 属性。