gpt4 book ai didi

python - 具有同步属性的类

转载 作者:行者123 更新时间:2023-12-01 09:32:29 25 4
gpt4 key购买 nike

我正在尝试创建 2 个类,它们的实例将具有同步属性,相互指向。

例如,给定 2 个类 ItemQueue:

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.queuelist 中有 item

这是我的尝试:

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,只是返回,因为它是队列已设置。

这是Pythonic,还是有更好的解决方案?

最佳答案

为什么一个项目应该关心它所在的队列?更重要的是,为什么一个项目要负责它在队列之间的移动?为什么不这样做:

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)

关于python - 具有同步属性的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com