В этом конкретном контексте ваш пример не имеет большого смысла.
Когда Существо поднимает Предмет, предмет сохраняет индивидуальное существование. Он не исчезает, потому что его подобрали. Он все еще существует, но он (а) находится в том же месте, что и Существо, и (б) больше не имеет права быть подобранным. Несмотря на изменение состояния, оно все еще существует.
Существует двусторонняя связь между Бытием и Предметом. Существо имеет Предмет в коллекции. Предмет связан с Существом.
Когда Предмет берется Существом, должны произойти две вещи.
Существо, как добавляет Предмет в некоторые set
предметов. Например, ваш атрибут bag
может быть таким set
. [A list
плохой выбор - имеет ли значение заказ в сумке?]
Местоположение Предмета меняется с того места, где оно было раньше, на местоположение Существа. Вероятно, есть два класса предметов - предметы с независимым ощущением местоположения (потому что они перемещаются сами по себе) и предметы, которые должны делегировать местоположение существу или месту, где они сидят.
Ни при каких обстоятельствах ни один объект Python никогда не должен быть удален. Если предмет «уничтожен», значит, его нет в сумке Существа. Это не в месте.
player.bag.remove(cat)
Это все, что требуется, чтобы выпустить кота из сумки. Поскольку кошка больше нигде не используется, она будет существовать как «используемая» память и не будет существовать, потому что ничто в вашей программе не может получить к ней доступ. Он тихо исчезнет из памяти, когда произойдет какое-то квантовое событие, и ссылки на память будут удалены.
С другой стороны,
here.add( cat )
player.bag.remove(cat)
Поместит кота в текущее местоположение. Кошка продолжает существовать и не будет выброшена вместе с мусором.