Найти - Пользователи
Полная версия: Определить цепочку объектов
Начало » Python для новичков » Определить цепочку объектов
1
leonid_10
Подскажите, пожалуйста,если возможно.
Объект может иметь модификатор, который может иметь другой объект, который в свою очередь может иметь модификатор так же с объектом снова имеющим модификатор и объект, и так до какого-то числа 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
Не могу сообразить, как её завершить.
Soteric
Через рекурсию?
sergeek
попробуй что-нибудь вроде такого:
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)
leonid_10
Shaman
Должно помочь.
ссылки никуда ни ведут :(
Soteric
Через рекурсию?
Попробую погуглить. Спасибо откликнувшимся, появилась надежда.:):)
leonid_10
sergeek
попробуй что-нибудь вроде такого:
Спасибо, попытаюсь!
Shaman
leonid_10
ссылки никуда ни ведут
Поправил.
leonid_10
Shaman
Поправил.
Благодарю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB