2014-09-08 2 views
2

Я не могу преобразовать простой [0, 20, 0, 20, 0, 20] в list.Преобразование класса в список Python

Код:

geo = hou.pwd().geometry() 

print geo.boundingBox() 
print type(geo.boundingBox()) 

Выход:

[0, 20, 0, 20, 0, 20] 
<class 'hou.BoundingBox'> 

Тест:

list(geo.boundingBox()) 
len(geo.boundingBox()) 

Я получаю следующее сообщение об ошибке:

object BoundingBox is not iterable. 
Object of type 'BoundingBox' has no len() 

Я прочитал все связанные вопросы, но они, похоже, не решают мою проблему.

+3

классы могут переопределять методы __str __() и __repr __() для отображения всего, что они хотят. Просто потому, что они выглядят как список, это не значит, что они есть. –

+0

Каковы атрибуты 'hou.BoundingBox'? Вы можете получить его размер, вызвав 'len (geo.boundingBox())' (или аналогичный)? Можете ли вы индексировать его ('geo.boundingBox() [1]')? – inspectorG4dget

+0

@GregS да, я знаю, что вы имеете в виду, я пробовал из строки в список, но я получаю классику: ['[', '0', ',', '', '2', '0', ',' , '', '0', ',', '', '2', '0', ',', '', '0', ',', '', '2', '0', ' ] '] – Rosenthal

ответ

2

Vector3 s может быть преобразован в list, поскольку они реализуют методы доступа к элементам.

list(geo.boundingBox().minvec()) + list(geo.boundingBox().maxvec()) 
+0

Не могли бы вы объяснить, почему это работает? Один ответ на один код не рекомендуется. –

+0

Это не работает, вы должны сначала называть boundingbox – Rosenthal

+0

geo.boundingBox(). Maxvec() – Rosenthal

Смежные вопросы