Я пишу алгоритм для представления деревьев регрессии, используя модуль pydot (интерфейс к языку Dot Graphviz).
В алгоритме составляются списки ребер и узлов, а затем они представляются - это нормально работает.
Но в некоторых конкретных ситуациях мне нужно удалить некоторые края и узлы, и вот где я застреваю. Вот часть кода:
import pydot
graph = pydot.Dot(graph_type='graph')
link4 = pydot.Edge(node10, node21, label=etiquetas[3])
link5 = pydot.Edge(node11, node22, label=etiquetas[4])
lista_links = [link4, link5]
# if some conditions are verified, then:
lista_links.remove(link5)
for link in lista_links:
graph.add_edge(link)
graph.write_png('teste.png')
Я ожидал, что этот код будет работать без проблем, но я получаю сообщение об ошибке:
AttributeError: 'NoneType' object has no attribute 'get_top_graph_type'
Моя единственная идея - вместо удаления узлов и ребер в некоторых конкретных ситуациях изменить код и добавить только узлы и ребра после того, как я определю все конкретные ситуации. Но это было бы намного больше работы ... (Код намного больше, чем то, что я вам показал, и у меня есть несколько конкретных ситуаций, которые необходимо учитывать).
Мне любопытно, почему python ведет себя так ...
Может кто-нибудь объяснить это мне или дать мне представление о том, как изменить это поведение?
Заранее спасибо,
Carla