我正在尝试创建2个类,其实例将具有同步属性,指向彼此。
例如,给定2个类Item
和Queue
:
class Item(object):
def __init__(self, id, question, answer, queue=None):
self.id = id
self.question = question
self.answer = answer
self.queue = queue
class Queue(object):
def __init__(self, name):
self.name = name
self.list = []
我想确保item.queue
内有item
list
。
这是我的尝试:
class Item(object):
def __init__(self, id, question, answer, queue=None):
self.id = id
self.question = question
self.answer = answer
self.queue = None
self.move_to(queue)
def move_to(self, queue):
if self.queue == queue:
return
if self.queue:
self.queue.remove(self)
self.queue = queue
if self.queue:
self.queue.add(self)
class Queue(object):
def __init__(self, name):
self.name = name
self.list = []
def add(self, item):
if item not in self.list:
self.list.append(item)
item.move_to(self)
def remove(self, item):
if item in self.list:
self.list.remove(item)
item.move_to(None)
但我对此解决方案感到不安。当我拨打item.move_to
时,系统会调用queue.add
,然后又会再次呼叫item.move_to
,只会返回,因为它已设置queue
。
这是pythonic,还是有更好的解决方案?
答案 0 :(得分:1)
为什么项目关心它在哪个队列?更重要的是,为什么一个项目负责它在队列之间的移动?为什么不这样做:
class Queue(object):
def move_item_to_other_queue(self, item, other):
if item in self.list:
self.list.remove(item)
other.list.append(item)