Skip to main content
 首页 » 编程设计

python之在类实例之间创建循环引用

2025年05月04日10linjiqin

我正在尝试构建一个允许实例指向另一个类的类,但我希望它们最终形成一个循环(因此实例 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