我正在尝试构建一个允许实例指向另一个类的类,但我希望它们最终形成一个循环(因此实例 A → 实例 B → 实例 C → 实例 A)
我尝试了以下操作,但出现了 NameError:
class CyclicClass:
def __init__(self, name, next_item):
self.name = name
self.next_item = next_item
def print_next(self):
print(self.next_item)
item_a = CyclicClass("Item A", item_b)
item_b = CyclicClass("Item B", item_a)
这在 Python 中是一种不合适的模式吗?如果是这样,实现此方法的正确方法是什么?这看起来与以下内容相似但不相同,因为类定义本身不是循环的:Circular dependency between python classes
请您参考如下方法:
您需要先创建对象,然后链接它们。
item_a = CyclicClass("Item A", None)
item_b = CyclicClass("Item B", item_a)
item_a.next_item = item_b
将 CyclicClass 的第二个参数视为一种便利,而不是链接两个对象的主要方式。您可以通过将 None 作为默认参数值来强调这一点。
class CyclicClass:
def __init__(self, name, next_item=None):
self.name = name
self.next_item = next_item
def print_next(self):
print(self.next_item)
item_a = CyclicClass("Item A")
# item_b = CyclicClass("Item B")
# item_b.next_item = item_a
item_b = CyclicClass("Item B", item_a)
item_a.next_item = item_b
