Форум сайта python.su
3
Подскажите, пожалуйста,если возможно.
Объект может иметь модификатор, который может иметь другой объект, который в свою очередь может иметь модификатор так же с объектом снова имеющим модификатор и объект, и так до какого-то числа N
Начало функции выглядит так:
def exportShapes(scene, sel): modifiers = ob.modifiers for mod in modifiers: if mod.type == 'BOOLEAN': operation = mod.operation.lower() tabWrite("%s { \n"%operation) child = mod.object childModifiers = child.modifiers for childMod in childModifiers: if childMod.type == 'BOOLEAN': operation = childMod.operation.lower() tabWrite("%s { \n"%operation) child1 = childMod.object
Офлайн
20
Через рекурсию?
Офлайн
88
http://yandex.ru/yandsearch?text=%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%20%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D0%B5%D0%B2%20python
http://yandex.ru/yandsearch?text=%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%20%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2%20python
Должно помочь.
Отредактировано Shaman (Июнь 30, 2013 12:35:43)
Офлайн
43
попробуй что-нибудь вроде такого:
class Node: child = value = None def pretty_print(self, deep=0): indent = ' '*deep child_repr = '--------' if self.child is None else self.child.pretty_print(deep+1) return '{}{}\n{}'.format(indent, self.value, child_repr) class Object(Node): def __init__(self, lst): self.value, *rest = lst if rest: self.child = self.modifier = Modifier(rest) def __repr__(self): return self.pretty_print() class Modifier(Node): def __init__(self, lst): self.value, *rest = lst if rest: self.child = self.object = Object(rest) init_list = [] for n in range(3): init_list.append('object_val {}'.format(n)) init_list.append('modifier_val {}'.format(n)) print(init_list) o = Object(init_list) print(o) print(o.modifier.object.modifier.object)
Офлайн
3
Shamanссылки никуда ни ведут :(
Должно помочь.
SotericПопробую погуглить. Спасибо откликнувшимся, появилась надежда.:):)
Через рекурсию?
Офлайн
3
sergeekСпасибо, попытаюсь!
попробуй что-нибудь вроде такого:
Офлайн
88
leonid_10Поправил.
ссылки никуда ни ведут
Офлайн
3
ShamanБлагодарю.
Поправил.
Офлайн