Python:迭代一个类中多个方法共享的列表

Python:迭代一个类中多个方法共享的列表,python,class,Python,Class,我使用的是tornado.websocket,其中类方法是WebSocketHandler方法的重写。无论如何,我的代码看起来是这样的: class SocketHandler(tornado.websocket.WebSocketHandler): current_ninja_pool = enumerate(return_dependency_lvl_0()) current_ninja = next(current_ninja_pool) file_to_uploa

我使用的是tornado.websocket,其中类方法是WebSocketHandler方法的重写。无论如何,我的代码看起来是这样的:

class SocketHandler(tornado.websocket.WebSocketHandler):
    current_ninja_pool = enumerate(return_dependency_lvl_0())
    current_ninja = next(current_ninja_pool)
    file_to_upload = []

    def check_origin(self, origin):
        return True

    def open(self):
        logging.info("A client connected.")
        self.run()

    def run(self):
        if condition:
            do_this()
    else:
        do_that()
        self.current_ninja = next(self.current_ninja_pool)
        self.run()

def on_message(self, message):
    do_a_lot_of_stuff()
    if message == 'next one':
        self.current_ninja = next(self.current_ninja_pool)

def on_close(self):
    logging.info("A client disconnected")
所以,我想要的是能够迭代我的枚举,这样每个元素都可以在运行的方法中或在消息上进行处理,这取决于我的客户端websocket将如何回答。问题是我想在特定条件下进行迭代,但我不知道如何进行迭代。因为我不太熟悉处理类和实例变量的方式,所以我可能忽略了一点。
谢谢

您需要一个迭代器。幸运的是,enumerate已经返回了一个迭代器;您只需要访问它,而不是存储当前项

我还怀疑当前的_ninja_池应该是一个实例变量,而不是在类的所有实例中共享的类变量

class SocketHandler(tornado.websocket.WebSocketHandler):
    def __init__(self, *args, **kwargs)
        self.current_ninja_pool = enumerate(return_dependency_lvl_0())
        file_to_upload = []

        def run(self):
            item = next(self.current_ninja_pool)
            do_something_with(item)

由于我在调用特定函数时需要迭代,您认为使用生成器而不是枚举是一种好方法吗?