在Python中,将两个类相互链接的正确方法是什么
我正在用python编写snake来练习。 因此,我必须分类:在Python中,将两个类相互链接的正确方法是什么,python,oop,attributes,Python,Oop,Attributes,我正在用python编写snake来练习。 因此,我必须分类:Field()和Snake() 我必须从字段中的Snake获取属性 反过来也是如此 我是这样做的 if __name__ == "__main__": snake=Snake() field=Field(snake) snake.field = field 使用_init_; in字段: def __init__(self, snake): self.snake = snake 这是一种“正确”的方法,还是有更好或
Field()
和Snake()
我必须从字段中的Snake
获取属性
反过来也是如此
我是这样做的
if __name__ == "__main__":
snake=Snake()
field=Field(snake)
snake.field = field
使用_init_; in字段:
def __init__(self, snake):
self.snake = snake
这是一种“正确”的方法,还是有更好或更通用的方法?如果两个类必须相互引用,那么确保这一点的更好方法是:
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
构造函数将确保snake
对象通过引用回到field
对象来初始化。关键是,必要的初始化代码应该放在构造函数中,即\uuuu init\uuuu
方法,既然字段
和蛇
之间存在双向关系,那么就在代码中明确说明它。为什么两者都需要对方?“蛇有一些姿势”我同意,但为什么蛇的“食物”是在野外制作的呢。即使他们不需要对方,我仍然想知道,如果他们需要对方,我该怎么做