У меня есть объект scene
, который является экземпляром класса Scene
и имеет список children
, который возвращает:
[<pythreejs.pythreejs.Mesh object at 0x000000002E836A90>, <pythreejs.pythreejs.SurfaceGrid object at 0x000000002DBF9F60>, <pythreejs.pythreejs.Mesh object at 0x000000002E8362E8>, <pythreejs.pythreejs.AmbientLight object at 0x000000002E8366D8>, <pythreejs.pythreejs.DirectionalLight object at 0x000000002E836630>]
Если я хочу обновить этот список с помощью point
, который имеет тип:
<class 'pythreejs.pythreejs.Mesh'>
Мне нужно выполнить:
scene.children = list(scene.children) + [point]
Обычно я выполнял:
scene.children.append(point)
Однако, хотя эти два подхода добавляют point
, только первый фактически обновляет список и выдает ожидаемый результат (то есть воксели в сетке). Почему?
Полный код можно найти здесь.
append
должно работать. Если это не так, происходит что-то очень странное, и вам нужно опубликовать минимально воспроизводимый пример. - person Kevin   schedule 10.09.2015scene.children
на самом деле не список, это какой-то другой класс, который реализуетappend
, но ведет себя не так, как список. Если вы поместитеprint(type(scene.children))
в строку, непосредственно предшествующуюscene.children.append(point)
, что получится на выходе? - person Kevin   schedule 10.09.2015<type 'list'>
; обратите внимание, чтоscene
- это экземпляр классаScene
, аchildren
- это список - person nluigi   schedule 10.09.2015scene.children
, чтобы увидеть, присутствует ли внутри негоpoint
? Вы проверяете сразу после строкиappend
или через какое-то время? - person Kevin   schedule 10.09.2015point
фактически добавляется, посколькуpoint in scene.children
возвращаетTrue
после добавления. Однако результат таков, что в случаеscene.children = list(scene.children) + [point]
результат соответствует ожидаемому (воксели добавляются в сетку), а в случаеscene.children.append(point)
— нет. Это действительно сбивает с толку :(... - person nluigi   schedule 10.09.2015append
ing изменит содержимое списка обеих переменных. Но если вы сделаетеscene.children = some_new_value
, то scene.children будет указывать на новый список, а другая переменная по-прежнему будет указывать на старый. - person Kevin   schedule 10.09.2015scene.children
— это свойство, которое возвращает копию списка, используемого внутри? Если у вас нет исходного кода или документации, попробуйтеprint(scene.children is scene.children)
- person Niklas R   schedule 10.09.2015