我正在尝试构建一个允许实例指向另一个类的类,但我希望这些类最终形成一个循环(例如实例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)
Run Code Online (Sandbox Code Playgroud)
这在Python中是不合适的模式吗?如果是这样,实现这个的正确方法是什么?这似乎与以下类似,但不一样,因为类定义本身不是循环的:python类之间的循环依赖
您需要先创建对象,然后链接它们.
item_a = CyclicClass("Item A", None)
item_b = CyclicClass("Item B", item_a)
item_a.next_item = item_b
Run Code Online (Sandbox Code Playgroud)
将第二个参数想象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
Run Code Online (Sandbox Code Playgroud)