Python:迭代一个类中多个方法共享的列表
我使用的是tornado.websocket,其中类方法是WebSocketHandler方法的重写。无论如何,我的代码看起来是这样的: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
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)
由于我在调用特定函数时需要迭代,您认为使用生成器而不是枚举是一种好方法吗?