Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2013 07:29:48

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Определить цепочку объектов

Подскажите, пожалуйста,если возможно.
Объект может иметь модификатор, который может иметь другой объект, который в свою очередь может иметь модификатор так же с объектом снова имеющим модификатор и объект, и так до какого-то числа 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
Не могу сообразить, как её завершить.



Офлайн

#2 Июнь 30, 2013 09:36:26

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Определить цепочку объектов

Через рекурсию?



Офлайн

#3 Июнь 30, 2013 11:21:51

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Офлайн

#4 Июнь 30, 2013 12:14:21

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Определить цепочку объектов

попробуй что-нибудь вроде такого:

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)

Офлайн

#5 Июнь 30, 2013 12:14:54

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Определить цепочку объектов

Shaman
Должно помочь.
ссылки никуда ни ведут :(
Soteric
Через рекурсию?
Попробую погуглить. Спасибо откликнувшимся, появилась надежда.:):)



Офлайн

#6 Июнь 30, 2013 12:16:11

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Определить цепочку объектов

sergeek
попробуй что-нибудь вроде такого:
Спасибо, попытаюсь!



Офлайн

#7 Июнь 30, 2013 12:38:12

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Определить цепочку объектов

leonid_10
ссылки никуда ни ведут
Поправил.

Офлайн

#8 Июнь 30, 2013 14:38:57

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Определить цепочку объектов

Shaman
Поправил.
Благодарю.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version