Я пишу некоторый код в Sage, чтобы выполнить некоторые вычисления с графами Фейнмана, которые являются просто конечными, неориентированными мультиграфами с метками ребер. Мне нужно реализовать такие методы, как сокращение ребер, которые, как ни странно, отсутствуют в классе sage.graphs.graph.Graph
. Но я также хочу унаследовать все существующие методы графа, такие как, например, is_tree
.
Вот вершина модуля Feynman.sage, которую должен присоединить новый класс.
from sage.graphs.graph import Graph
class FeynmanGraph(Graph):
"""An unoriented multi-graph with labeled edges"""
def __init__(self, E=[]):
self._edges = len(E)
def __repr__(self):
return 'A Feynman graph with ' + str(self._edges) + ' edges.'
Я не правильно что-то делаю. Хотя создание экземпляра класса дает правильный каталог методов, многие из них не работают, потому что
'FeynmanGraph' object has no attribute '_backend'
Я думаю, это как-то связано с тем, что Sage - это просто Pythonic-оболочка для какого-то другого пакета теории графов.
Пожалуйста, сообщите.