在 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__
方法,并且由于 Field
和 Snake
之间存在双向关系,因此在代码中明确表示。
我正在 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__
方法,并且由于 Field
和 Snake
之间存在双向关系,因此在代码中明确表示。