Python: лучший способ получить доступ к переменной из экземпляра класса? - PullRequest
0 голосов
/ 28 мая 2011

У меня есть класс с именем Player , и будет 200-300 экземпляров этого класса. В этом классе есть функция с именем Move , и для этой функции требуется знание карты.

У меня также есть класс с именем Карта с 1-2 экземплярами. Как лучше всего передать экземпляр Карта в Игрок экземпляров?

Я просто спрашиваю, потому что, если я передам его экземпляру в Player init , чтобы я мог получить доступ к экземпляру через self.map - разве это не создаст сотни копий экземпляра Map (один для каждый экземпляр Player)?

Насколько я знаю, это может быть стандартным способом сделать это, но у меня есть ноющее чувство, что это неправильно.

Спасибо

Ответы [ 2 ]

1 голос
/ 28 мая 2011

Ничто в Python никогда не копируется неявно.Всякий раз, когда вы делаете x = y, будь то вызов функции или присвоение переменной / элемента / атрибута, x и y впоследствии ссылаются на один и тот же объект.

Я вижу две ловушки с вашим планом, хотя:

  • Знает ли карта также об игроках?Если так, у вас будет много циркулярных ссылок в ваших руках.Вместо этого просто передайте карту на move().
  • Кажется более уместным иметь саму карту или какой-либо другой богатый класс "игровой логики" для обработки фактического движения.(Однако я не разработчик игр; мой инстинкт инстинкта состоит в том, что вещь на карте не должна выходить за пределы себя и перемещаться сама по себе.)
1 голос
/ 28 мая 2011

Если вы передаете Map в Player в init, это просто передает ссылку , а не копию.Вы не будете создавать избыточные экземпляры Map таким образом, и это лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...