Как создать древовидную структуру данных с функцией, используя строки с exec, eval или gettattr?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать древовидную структуру данных с функцией, используя строки с exec, eval или gettattr?

Сообщение Anonymous »

Я определил структуру дерева данных с помощью следующего кода:

Код: Выделить всё

class TreeNode:
def __init__(self, data):
self.data=data
self.children=[]
self.parent=None

def add_child(self, child):
child.parent=self
self.children.append(child)
Этот класс включает в себя некоторые другие методы для печати, поиска, изменения и т. д.
Теперь у меня есть функция, которая генерирует дерево, например:

Код: Выделить всё

def build_product_tree():
laptop=TreeNode("Laptop")
laptop.add_child(TreeNode("Mac"))
laptop.add_child(TreeNode("Surface"))
laptop.add_child(TreeNode("Thinkpad"))
root=TreeNode("Electronics")
root.add_child(laptop)
return root
Но; Я получаю данные для дерева из списка, и мне нужна функция, которая генерирует дерево, для работы с этим списком, например:

Код: Выделить всё

def build_product_tree():

command='laptop=TreeNode('Laptop')'
exec(command)
command='laptop.add_child(TreeNode('Mac'))'
exec(command)
command='laptop.add_child(TreeNode('Surface'))'
exec(command)
command='laptop.add_child(TreeNode('Thinkpad'))'
exec(command)
command='root=TreeNode('Electronics')'
exec(command)
command='root.add_child(laptop)'
exec(command)
return root

И очевидно, что это не работает. Какой еще способ у меня есть?
Я пытался разделить строки и использовать eval, getattr... без устранения проблемы.

Подробнее здесь: https://stackoverflow.com/questions/791 ... th-exec-ev
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»