Если два класса должны иметь ссылки друг на друга, то лучшим способом, обеспечивающим это, будет:
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
, потому что теперь, когда вы создаете объект Field
с экземпляром объекта Snake
, конструктор Field
обеспечит инициализацию объекта Snake
ссылкой на объект Field
. Дело в том, что необходимый код инициализации должен быть помещен в конструкторы, то есть __init__
методы, и, поскольку существует связь между Field
и Snake
, которая является двунаправленной, сделайте его явным в коде.