在 Python 中 link 两个 类 的正确方法是什么

What is the correct way to link two classes to each other in Python

我正在 python 编写 snake 来练习。 所以我必须 类: Field()Snake() 我必须从 Field 中的 Snake 获取属性 反之亦然。

我是这样做的

if __name__ == "__main__":
  snake=Snake()
  field=Field(snake)
  snake.field = field

with the __ init __ in field:

def __init__(self, snake):
  self.snake = snake

这是 "correct" 的方法还是有更好或更通用的方法?

如果两个 类 必须相互引用,那么确保这一点的更好方法是:

class Snake:
    def set_field(self, field):
        self.field = field


class Field:
    def __init__(self, snake):
        self.snake = snake
        snake.set_field(self)

snake = Snake()
field = Field(snake)

您现在不再需要明确地编写 snake.field = field 代码,因为现在当您使用 Snake 对象的实例构造 Field 对象时,Field 构造函数将确保使用 Field 对象的引用初始化 Snake 对象。关键是必要的初始化代码应该放在构造函数中,即 __init__ 方法,并且由于 FieldSnake 之间存在双向关系,因此在代码中明确表示。