Narrowed issue down to unexpected altering w/ set_position() in update()

new_world is assigned to a new copy of world in update(), two objects
are checked to be distinct. But when new_world call set_position(),
world ends up being altered also. Googled attempts to resolve this
(reference/value passing issue?) not fruitful.